尝试从Cygwin对AWS EC2运行非常基本的Ansible ping操作,但没有任何成功。
准备好以下配置:
ansible.cfg:
[defaults]
hostfile = hosts
host_key_checking = False
主机:
[local]
localhost
[servers]
server-1 ansible_ssh_host=ec2-54-175-139-180.compute-1.amazonaws.com ansible_ssh_user=ec2-user ansible_ssh_private_key_file=ansible.pem
所有这些文件+ PEM文件都位于同一文件夹中。 我可以使用PEM文件通过SSH连接到EC2。我也能够远程登录。 Ping工作正常。但以下命令不断失败:
ansible server-1 -m ping -vvv
出现以下错误消息:
<ec2-54-175-139-180.compute-1.amazonaws.com> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<ec2-54-175-139-180.compute-1.amazonaws.com> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="ansible.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ec2-user -o ConnectTimeout=10 -o 'ControlPath=/home/UserHome/.ansible/cp/ansible-ssh-%h-%p-%r' ec2-54-175-139-180.compute-1.amazonaws.com '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1469264080.61-242019267058306 `" && echo ansible-tmp-1469264080.61-242019267058306="` echo $HOME/.ansible/tmp/ansible-tmp-1469264080.61-242019267058306 `" ) && sleep 0'"'"''
server-1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
那里有什么问题?我已经看到有关同一问题的多个问题,但遗憾的是没有解决方案......我使用的是2.1版本的Ansible。 任何帮助将非常感谢!
答案 0 :(得分:0)
默认情况下,Ansible 1.3及更高版本会尽可能使用本机OpenSSH进行远程通信。这使得〜/ .ssh / config中的ControlPersist(性能特征),Kerberos和选项(如跳转主机设置)成为可能。但是,当使用Enterprise Linux 6操作系统作为控制机器(Red Hat Enterprise Linux和CentOS等衍生产品)时,OpenSSH的版本可能太旧而无法支持ControlPersist。在这些操作系统上,Ansible将回归使用名为'paramiko'的OpenSSH的高质量Python实现。如果您希望使用Kerberized SSH等功能,请考虑使用Fedora,OS X或Ubuntu作为您的控制机器,直到您的平台可以使用更新版本的OpenSSH - 或者在Ansible中使用“加速模式”。
在此处查看加速模式的文档http://docs.ansible.com/ansible/playbooks_acceleration.html
答案 1 :(得分:0)
好的,我找到了解决方案。
将此添加到我的ansible.cfg解决了这个问题:
[ssh_connection]
ssh_args = -o ControlMaster = no