Ansible中的隐含SSH连接参数

Ansible中的隐含SSH连接参数,ansible,Ansible,使用-vvv运行playbook时,我会得到以下日志: <192.168.1.109> SSH: EXEC ssh -C -q -o PasswordAuthentication=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o

使用
-vvv
运行playbook时,我会得到以下日志:

 <192.168.1.109> SSH: EXEC ssh -C -q -o PasswordAuthentication=yes
     -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
     -o ControlMaster=auto -o ControlPersist=60s
     -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no
     -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
     -o PasswordAuthentication=no -o ConnectTimeout=120
     -o ControlPath=/Users/techraf/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.1.109
     '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1469485176.18-28678795304310 `" && echo ansible-tmp-1469485176.18-28678795304310="` echo $HOME/.ansible/tmp/ansible-tmp-1469485176.18-28678795304310 `" ) && sleep 0'"'"''
第二部分:

-o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no
-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
-o PasswordAuthentication=no -o ConnectTimeout=120
来自哪里

我的目标是使用密码验证来运行这个剧本,但是后一组参数阻止了它


我已检查以下内容是否已清除/不存在:

  • /usr/local/etc/ansible/ansible.cfg
    (我正在运行安装在OS X上的ansible自制软件)
  • $ANSIBLE\u CONFIG
    环境变量
  • .ansible.cfg
    (在主目录中)

我正在运行Ansible 2.1.0.0。

在建立连接时,它认为您没有设置密码,因此它正在尝试从有效的协商选项中删除该密码。有关更多详细信息,请参阅,或确保在相关主机上设置了ansible_密码

我的目标是使用密码验证来运行这个剧本,但是后一组参数阻止了它

您需要为Ansible添加一个附加参数以使用密码身份验证:

-k, --ask-pass      ask for connection password
Ansible将提示您输入一次密码,然后使用该密码连接到该运行中的所有服务器



通常应避免对ssh使用密码验证。它不仅让人讨厌(你必须一直输入密码),而且会打开你的服务器进行暴力攻击;即使您使用其他方式(如fail2ban)阻止这些操作,这仍然不是一个好主意。如果您不想让密钥在没有任何密码的情况下进行身份验证,可以在密钥上设置密码,并在启动时使用ssh代理对其进行解密。

谢谢您的评论。您是对的,但是请注意,您可能会使用Ansible playbooks将密钥上载到新设置的服务器,该服务器只能通过密码登录访问。这就是为什么我特别引用了一个剧本,提示用户输入目标的IP。
-k, --ask-pass      ask for connection password