Você pode tentar a opção PreferredAuthentications
, configurando-a como publickey,password
. O padrão inclui estes nesta ordem, junto com outras opções, de forma que ansible esteja presumivelmente configurando isso. Adicioná-lo via -o
ou o cliente ssh_config
pode impedir isso.
Você pode usar um script de wrapper. Por exemplo, com isso em key_or_password.sh
e pass.sh
que fornece a senha, executar bash key_or_password.sh root@host
tentará uma publickey seguida de um login de senha não interativo.
export DISPLAY=dummy:0
export SSH_ASKPASS=$PWD/pass.sh
exec setsid ssh -v -o 'PreferredAuthentications publickey,password' "$@"
O log indica qual método foi bem sucedido, por exemplo,
debug1: Authentication succeeded (publickey).