ansible SSH连接失败

问题描述:

我试图运行在多个服务器上ansible的角色,但我得到一个错误:ansible SSH连接失败

fatal: [192.168.0.10]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}

我的/ etc/ansible/hosts文件看起来是这样的:

192.168.0.10 ansible_sudo_pass='passphrase' ansible_ssh_user=user 
192.168.0.11 ansible_sudo_pass='passphrase' ansible_ssh_user=user 
192.168.0.12 ansible_sudo_pass='passphrase' ansible_ssh_user=user 

我不知道发生了什么 - 一切看起来都很好 - 我可以通过SSH登录,但是ping能够返回相同的错误。

从详细的执行日志:

<192.168.0.10> ESTABLISH SSH CONNECTION FOR USER: user <192.168.0.10> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=user -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.0.10 '/bin/sh -c '"'"'(umask 22 && mkdir -p " echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829 " && echo " echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829 " )'"'"''

你能帮我不知何故?如果我必须在本地模式下使用ansible(-c local),那么它是无用的。

我试着删除ansible_sudo_pass和ansible_ssh_user,但它没有帮助。

您需要更改ansible_ssh_pass以及或SSH密钥,例如我在我的清单文件中使用这样的:

192.168.33.100 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant 

在那之后我可以连接到远程主机:

ansible all -i tests -m ping 

结果如下:

192.168.33.100 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 
} 

希望对你有帮助。

+1

是的!我错过了ansible_ssh_pass变量。一切都像现在的魅力一样。非常感谢! – Thomas

+1

根据http://docs.ansible.com/ansible/intro_inventory.html,它应该是'ansible_user'而不是'ansible_ssh_user'。 – Matthias

+0

如果你搜索'ansible_ssh_user',那么你可以在上面提到的链接中找到它,它在1.9中使用,但在合理的2.0版本中,它们已经将其更改为'ansible_user',但是'ansible_ssh_user'仍然对两者都有效。 –

尝试修改您的主机文件:

192.168.0.10 
192.168.0.11 
192.168.0.12 

的ansible_ssh_port同时重新加载虚拟机改变。

==>默认:引导VM ...

==>默认:等待机器启动。这可能需要几分钟的时间...

default: SSH address: 127.0.0.1:2222 

default: SSH username: vagrant 

default: SSH auth method: private key 

所以我不得不更新库存/ hosts文件如下:

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='centos' ansible_ssh_private_key_file=<key path> 

mkdir /etc/ansible 
cat > hosts 
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key 

转到您的剧本目录并运行ansible所有-m ping

+0

这对我有效 – suyesh

我有这个问题,但它是由于不同于其他答案中记录的原因。我试图部署的主机只有通过跳转框才可用。最初,我认为这是因为Ansible不认识我的SSH配置文件,但它是。对我来说,解决方案是确保存在于SSH配置文件中的用户与Ansible操作手册中的用户匹配。这为我解决了这个问题。