首页 文章

我可以ssh很好,但ansible说“没有路由主持人”

提问于
浏览
4

我写了一个脚本,使用vagrant运行几个vms,然后我必须使用ansible . 不幸的是我的主机是一台Windows机器,所以我认为我可以通过将所有vms放入vpn然后从同一个vpn中的另一台机器配置它来解决问题 .

从理论上讲,它可以工作......我可以毫不费力地进入其他机器 . 但是当我运行我的ansible playbook时,ansible失败了 .

起初我用 -vvvv 运行ansible时收到消息“ ssh: connect to host 10.1.2.100 [10.1.2.100] port 22: No route to host

这是在晚上,我很累,这个错误没有在第二天早上重现 . 不知道是否与vm有关,我正在进行部署,同时重新启动,或者接收机器从那时起被彻底销毁和使用 . 无论如何,问题并没有消失 .

结果现在,重新创建两个vms后:

# ansible-playbook -i vms -k -u vagrant vms.yml -vvvv

result:

<10.1.2.100> ESTABLISH SSH CONNECTION FOR USER: vagrant <10.1.2.100>
SSH: EXEC sshpass -d14 ssh -C -vvv -o ServerAliveInterval=50 -o
User=vagrant -o ConnectTimeout=10 -tt 10.1.2.100 '( umask 22 && mkdir
-p "$( echo $HOME/.ansible/tmp/ansible-tmp-1455781388.36-25193904947084 )" && echo
"$( echo $HOME/.ansible/tmp/ansible-tmp-1455781388.36-25193904947084
)" )' fatal: [10.1.2.100]: FAILED! => {"failed": true, "msg": "ERROR!
Using a SSH password instead of a key is not possible because Host Key
checking is enabled and sshpass does not support this.  Please add
this host's fingerprint to your known_hosts file to manage this
host."}

到目前为止这么清楚 . 我ssh到另一个实例中将它添加到已知主机 . 这没有任何麻烦 .

回到ansible,我再次尝试相同的命令 . 结果现在是:

<10.1.2.100> ESTABLISH SSH CONNECTION FOR USER: vagrant <10.1.2.100>
SSH: EXEC sshpass -d14 ssh -C -vvv -o ServerAliveInterval=50 -o
StrictHostKeyChecking=no -o User=vagrant -o ConnectTimeout=10 -tt
10.1.2.100 '( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1455782149.99-271768166468916 )" &&
echo "$( echo
$HOME/.ansible/tmp/ansible-tmp-1455782149.99-271768166468916 )" )'
<10.1.2.100> PUT /tmp/tmpXQKa8Z TO
/home/vagrant/.ansible/tmp/ansible-tmp-1455782149.99-271768166468916/setup
<10.1.2.100> SSH: EXEC sshpass -d14 sftp -b - -C -vvv -o
ServerAliveInterval=50 -o StrictHostKeyChecking=no -o User=vagrant -o
ConnectTimeout=10 '[10.1.2.100]' fatal: [10.1.2.100]: UNREACHABLE! =>
{"changed": false, "msg": "ERROR! SSH Error: data could not be sent to
the remote host. Make sure this host can be reached over ssh",
"unreachable": true}

好吧,我确保ssh可以访问主机,非常感谢你! Ansible仍然无法通过,我即将通过思考可能存在问题的事情来治疗脑肿瘤 .

有什么建议可能是什么问题?

1 回答

  • 1

    此处报告了此问题,但有一些解决方法:https://github.com/ansible/ansible/issues/15321

    共识似乎要么是a . 使用 ansible_password 或b . 在连接参数中使用 -u username . 但是,任何数量的东西都可能会破坏SSH连接,使其看起来更高级别的应用程序,因此我建议您完成该故障单中列出的每个步骤 .

相关问题