Ansible 无法访问多个主机

Ansible 无法访问多个主机

我是 ansible 新手,但在通过 ansible 访问多个主机时遇到了基本问题。我可以通过 ssh 访问所有主机,如果我使用 ansible 定位库存中的任何特定主机,也可以访问所有主机。它成功访问了我的其中一台主机,但无法访问其他所有主机。

如果我运行:

ansible all -i inventory.yml -u oytal -m ping

它返回:

192.168.1.90 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}


192.168.1.21 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: [email protected]: Permission denied (publickey).",
    "unreachable": true
}


192.168.1.20 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: [email protected]: Permission denied (publickey).",
    "unreachable": true
}


192.168.1.100 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: [email protected]: Permission denied (publickey).",
    "unreachable": true
}

无法访问的主机并不一致,我调整了主机的顺序,甚至删除了成功的主机,但它可以访问其他主机之一,但其余主机仍然会失败。

我的库存:

---
all:
    hosts:
        192.168.1.90:
        192.168.1.21:
        192.168.1.20:
        192.168.1.100:

答案1

权限被拒绝(公钥)

运行时(和其他主机)意味着 192.168.1.21(和其他主机)上的 sshd默认无法获取从 192.168.1.21(和其他主机)运行 ssh 命令的用户的公钥。ssh [email protected]/home/oytal/.ssh/authorized_keys

造成这种情况的原因可能有很多。确保 ssh 命令有效

外壳> ssh[电子邮件保护]

接下来,确保 Ansible 使用正确的私钥(请参阅 `ansible-doc -t connection ssh)。尝试手动设置。例如

shell> ANSIBLE_PRIVATE_KEY_FILE=$HOME/.ssh/id_rsa ansible 192.168.1.21 -i inventory.yml -u oytal -m ping

检查清单和 Ansible 配置

shell> ansible-config dump

如果这没有帮助,请查看其他权限被拒绝(公钥)答案解释了错误的可能原因。

答案2

我终于找到了解决问题的方法。我觉得自己有点愚蠢,但这是因为我的 id_ed25519 被加密了。

我输入以下命令来修复该问题:

ssh-agent bash

ssh-add /home/$USER/.ssh/id_ed25519

答案3

解决方案:

“首先登录并注销所有远程服务器。然后,使用 ansible ping 到远程服务器。”

我也无法 ping 通多个远程服务器,因此我执行了上述解决方案。然后,我可以 ping 通所有远程服务器。

我不知道背后发生了什么,但我猜我们需要先将主服务器的指纹留给所有远程服务器,然后再使用 ansible ping 到远程服务器。

相关内容