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
来自哪里
我的目标是使用密码验证来运行这个剧本,但是后一组参数阻止了它
我已检查以下内容是否已清除/不存在:
(我正在运行安装在OS X上的ansible自制软件)/usr/local/etc/ansible/ansible.cfg
环境变量$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