【问题标题】:I can ssh just fine, but ansible says "no route to host"我可以 ssh 很好,但 ansible 说“没有主机路由”
【发布时间】:2018-07-28 07:50:28
【问题描述】:

我编写了一个脚本来使用 vagrant 运行多个虚拟机,然后我必须使用 ansible 进行配置。不幸的是,我的主机是一台 Windows 机器,所以我想我可以通过将所有 vm 放入一个 vpn 中,然后从同一 vpn 中的另一台机器上配置它们来解决这个问题。

理论上,它可以工作...我可以毫无问题地通过 ssh 连接到其他机器。但是当我运行我的 ansible playbook 时,ansible 失败了。

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

这是在晚上,我很累,第二天早上这个错误没有再次出现。不确定这是否与我正在进行部署的 vm 有关,因为同时重新启动,或者从那时起接收机器被完全破坏和升级。无论如何,问题并没有消失。

现在的结果,在重新创建两个虚拟机后:

# 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 仍然无法通过,而且我正因为思考可能是问题的事情而患上脑瘤。

任何建议可能是什么问题?

【问题讨论】:

  • 因此,Vagrant 创建了几个接口,vagrant ssh 命令将使用 127.0.01,主机上的高端口转发到来宾 VM 上的 22,而不是 Ansible 使用的 10.1.2.100 地址这里。您能否粘贴 Ansible 使用的确切 ssh 命令的输出 - ssh -vvv vagrant@10.1.2.100 或类似的东西?

标签: ssh ansible


【解决方案1】:

这里报告了此问题,并提供了一些解决方法: https://github.com/ansible/ansible/issues/15321

共识似乎是要么。使用ansible_password 或 b。在连接参数中使用-u username。但是,任何数量的事情都可能会破坏 SSH 连接,使其对更高级别的应用程序看起来“无法访问”,因此我建议您完成该票证中列出的每个步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2021-12-10
    相关资源
    最近更新 更多