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"
}
希望对你有帮助。
尝试修改您的主机文件:
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
这对我有效 – suyesh
我有这个问题,但它是由于不同于其他答案中记录的原因。我试图部署的主机只有通过跳转框才可用。最初,我认为这是因为Ansible不认识我的SSH配置文件,但它是。对我来说,解决方案是确保存在于SSH配置文件中的用户与Ansible操作手册中的用户匹配。这为我解决了这个问题。
是的!我错过了ansible_ssh_pass变量。一切都像现在的魅力一样。非常感谢! – Thomas
根据http://docs.ansible.com/ansible/intro_inventory.html,它应该是'ansible_user'而不是'ansible_ssh_user'。 – Matthias
如果你搜索'ansible_ssh_user',那么你可以在上面提到的链接中找到它,它在1.9中使用,但在合理的2.0版本中,它们已经将其更改为'ansible_user',但是'ansible_ssh_user'仍然对两者都有效。 –