Estou executando um manual padrão do ansible (v2.3.1) usando configurações de nome de usuário e senha SSH. Ao usar a configuração '-vvvv', posso ver esses comandos SSH sendo gerados
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
No caso acima, de onde estão sendo extraídas as configurações 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey'. Acredito que venham das configurações de SSH do cliente, mas isso está correto?
Entendo que posso substituir os argumentos ssh definindo isso em meu 'ansaible.cfg'
[ssh_connection]
scp_if_ssh=True
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o PreferredAuthentications=publickey
Alguém pode me explicar isso? Obrigado
Responder1
Estou observando que -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
está codificado noCódigo fonte
Se você substituir ssh_args
, ansible.cfg
será -o PreferredAuthentications=publickey
adicionado à linha de comando ssh, mas isso não substituirá-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
Exemplo:
$ 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'"'"''