Ansible, ¿de dónde provienen las configuraciones SSH de PreferredAuthentications?

Ansible, ¿de dónde provienen las configuraciones SSH de PreferredAuthentications?

Estoy ejecutando un manual ansible estándar (v2.3.1) usando la configuración de nombre de usuario y contraseña SSH. Cuando uso la configuración '-vvvv' puedo ver que se generan estos comandos SSH

EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
-o StrictHostKeyChecking=no -o Port=2222 
-o KbdInteractiveAuthentication=no 
-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey 
-o PasswordAuthentication=no -o User=dc_user -o ConnectTimeout=10

En el caso anterior, ¿de dónde se extraen las configuraciones 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey'? Creo que provienen de la configuración de SSH del cliente, pero ¿es correcto?

Entiendo que puedo anular los argumentos ssh definiendo esto en mi 'ansaible.cfg'

[ssh_connection]
scp_if_ssh=True
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o PreferredAuthentications=publickey

¿Alguien puede explicarme esto? Gracias

Respuesta1

Observo que -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickeyestá codificado en elcódigo fuente

Si anula ssh_args, ansible.cfgse -o PreferredAuthentications=publickeyagrega a la línea de comando ssh pero esto no reemplaza-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey

Ejemplo:

$ grep ssh_args /etc/ansible/ansible.cfg 
#ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o     PreferredAuthentications=publickey
$ ansible rhel7a -m ping -vvvv |grep EXEC
<rhel7a> SSH: EXEC ssh -vvv -o ControlMaster=auto -o ControlPersist=60s -o PreferredAuthentications=publickey -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 -o ControlPath=/home/user/.ansible/cp/13dd447a86 rhel7a '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''

información relacionada