我创建了一个集群,并尝试从另一个 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
,它应该可以工作)