Ansible - xxxx | UNREACHABLE!=> {“changed”: false, “msg”: "无法通过 ssh 连接到主机… }

Ansible - xxxx | UNREACHABLE!=> {“changed”: false, “msg”: "无法通过 ssh 连接到主机… }

我创建了一个集群,并尝试从另一个 Ansible 服务器访问主节点。我将 ssh 密钥复制到主服务器。我可以通过以下命令从 ansible 服务器访问它

ssh -i ~/.ssh/id_rsa [email protected]

但我无法达到

sudo ansible-playbook -i hosts /etc/ansible/playbook/test.yml

我犯了这个错误。

x.x.x.x | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host x.x.x.x port 22: Connection timed out\r\n", "unreachable": true }

你能帮帮我吗?其他服务器故障问题对我没有帮助。

笔记:

xxxx(这是主节点ip)


PLAY [nodes] ***************************************************************************************************************** TASK [Gathering Facts] *******************************************************************************************************

ok: [t.t.t.t]

fatal: [x.x.x.x]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host x.x.x.x port 22: Connection timed out\r\n", "unreachable": true}

TASK [test] *********************************************************************************

PLAY RECAP *******************************************************************************************************************

x.x.x.x : ok=0 changed=0 unreachable=1 failed=0

t.t.t.t : ok=1 changed=0 unreachable=0 failed=1```

答案1

ansible-playbook 命令可能失败,因为未定义 ssh-key 的路径。

Ansible 建议使用 ssh-agent:

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa

不使用 ssh-agent 添加私钥文件的另一种方法是使用清单文件中的 ansible_ssh_private_key_file,如下所述这里

https://docs.ansible.com/ansible/latest/user_guide/connection_details.html

答案2

可能性不大;但这可能是您的关键权限。请尝试以下方法:

cat ~/.ssh/id_rsa.pub | ssh @ "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"

这让我每次都能使用 ansible。

答案3

首先你必须在你的 ansible 服务器上设置私钥的权限 sudo chmod 600 id_rsa 检查你是否已经将公钥复制到管理节点 sudo chmod 700 id_rsa.pub 检查你的库存文件是否正确配置了正确的 ip 检查管理节点中的 sshd_config 文件可能存在一些问题 在 ansible 主服务器和管理节点上重新启动 ssh 服务器

答案4

根据您的连接测试,您正在使用ssh ...(假设密钥设置正确),您使用运行 ansible playbook sudo,这可能是原因......

我会推荐不是根本不使用sudo,因为 Ansible 不需要这样做,并且你的root用户可能与你的用户有不同的配置,因此请尝试使用相同的方法sudo,它应该可以工作)

相关内容