what tutorial source open cfg ssh ansible

ssh - tutorial - ansible windows



¿Cómo ignorar la comprobación de autenticidad SSH ansible? (8)

¿Hay alguna forma de ignorar la comprobación de autenticidad SSH realizada por Ansible? Por ejemplo, cuando acabo de configurar un nuevo servidor, tengo que responder sí a esta pregunta:

GATHERING FACTS *************************************************************** The authenticity of host ''xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)'' can''t be established. RSA key fingerprint is xx:yy:zz:.... Are you sure you want to continue connecting (yes/no)?

Sé que generalmente es una mala idea, pero estoy incorporando esto en un script que primero crea un nuevo servidor virtual en mi proveedor de la nube y luego llama automáticamente a mi libro de jugadas ansible para configurarlo. Quiero evitar cualquier intervención humana en medio de la ejecución del script.


Cambiar host_key_checking a false para todos los hosts es una muy mala idea.

El único momento en que desea ignorarlo es en el "primer contacto", que estas dos tareas lograrán:

- name: Check known_hosts for {{ inventory_hostname }} local_action: shell ssh-keygen -F {{ inventory_hostname }} register: has_entry_in_known_hosts_file changed_when: false ignore_errors: yes - name: Ignore host key on first run when: has_entry_in_known_hosts_file == 1 set_fact: ansible_ssh_common_args: ''-o StrictHostKeyChecking=no''

Por lo tanto, solo desactivamos la comprobación de la clave de host si no tenemos la clave de host en nuestro archivo known_hosts .


Dos opciones: la primera, como dijiste en tu propia respuesta, es establecer la variable de entorno ANSIBLE_HOST_KEY_CHECKING en False.

La segunda forma de configurarlo es ponerlo en un archivo ansible.cfg, y esa es una opción realmente útil porque puede configurarlo globalmente (a nivel de sistema o usuario, en /etc/ansible/ansible.cfg o ~/.ansible.cfg ), o en un archivo de configuración en el mismo directorio que el libro de jugadas que está ejecutando.

Para hacer eso, ansible.cfg un archivo ansible.cfg en una de esas ubicaciones e incluya esto:

[defaults] host_key_checking = False

También puedes establecer muchos otros valores predeterminados útiles, como si se recopilan o no los hechos al comienzo de una jugada, si se combinan los hashes declarados en varios lugares o se reemplaza uno por otro, y así sucesivamente. Hay una gran lista de opciones here en los documentos de Ansible.

Editar: una nota sobre seguridad.

La validación de la clave de host SSH es una capa de seguridad significativa para los hosts persistentes : si se conecta a la misma máquina muchas veces, es valioso aceptar la clave de host localmente.

Para instancias EC2 de mayor duración, tendría sentido aceptar la clave de host con una tarea ejecutada solo una vez en la creación inicial de la instancia:

- name: Write the new ec2 instance host key to known hosts connection: local shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts"

No hay un valor de seguridad para verificar las claves de host en las instancias que se levanta dinámicamente y elimina inmediatamente después de la ejecución del libro de jugadas, pero sí existe un valor de seguridad al verificar las claves de host para máquinas persistentes. Por lo tanto, debe administrar la comprobación de la clave del host de manera diferente por entorno lógico.

  • Deje la comprobación habilitada de forma predeterminada (en ~/.ansible.cfg )
  • Deshabilite la comprobación de la clave de host en el directorio de trabajo para los libros de jugadas que ejecuta en instancias efímeras ( ./ansible.cfg junto con el libro de jugadas para pruebas unitarias contra máquinas virtuales vagabundas, automatización para instancias ec2 de corta duración)

Encontré la respuesta, debe establecer la variable de entorno ANSIBLE_HOST_KEY_CHECKING en False . Por ejemplo:

ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook ...


Puede pasarlo como argumento de línea de comando mientras ejecuta el libro de jugadas:

ansible-playbook play.yml --ssh-common-args=''-o StrictHostKeyChecking=no''


Sé que la pregunta ha sido respondida y también es correcta, pero solo quería vincular el documento ansible donde se explica claramente cuándo y por qué se debe agregar la verificación respectiva: comprobación host-key-checking


Si no desea modificar ansible.cfg o playbook.yml , puede configurar una variable de entorno:

export ANSIBLE_HOST_KEY_CHECKING=False


Use el parámetro nombrado como validate_certs para ignorar la validación ssh

- ec2_ami: instance_id: i-0661fa8b45a7531a7 wait: yes name: ansible validate_certs: false tags: Name: ansible Service: TestService

Al hacer esto, ignora el proceso de validación ssh


adelante a

Para aquellos que usan jenkins para ejecutar el libro de jugadas, acabo de agregar a mi trabajo de jenkins antes de ejecutar el libro de jugadas ansible la variable de entorno ANSIBLE_HOST_KEY_CHECKING = False. Por ejemplo esto:

export ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook ''playbook.yml'' / --extra-vars="some vars..." / --tags="tags_name..." -vv