排除 ansible SSH 无法找到根本原因
troubleshooting ansible SSH can't reach a root cause
我遇到问题 运行 一些我在命令行中定义 ansible_user_ssh=root 的剧本
和 ssh 命令通过 ansible,returns 权限被拒绝。
HOST | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
"unreachable": true
}
我正在尝试排除故障,但没有找到根本原因。
来自 root 甚至清单(功能用户)文件中定义的用户的密钥已正确传播。
如果我从 root 用户或功能用户执行 ssh,它在那里没有问题。
如果我执行:
ansible -i /app/user/applications/inventory/commercialaseenv300-hosts -m ping -u root HOST
有效
如果我执行:
ansible -i /app/user/applications/inventory/commercialaseenv300-hosts -m ping -e ansible_ssh_user=root HOST
没用。 Returns 权限被拒绝
如果我执行:
sudo ansible -i /app/user/applications/inventory/commercialaseenv300-hosts -m ping -e ansible_ssh_user=root HOST
有效
如果我换成root用户执行:
ansible -i /app/user/applications/inventory/commercialaseenv300-hosts -m ping -e ansible_ssh_user=root HOST
有效
但我需要一个不起作用的脚本,因为它是大型脚本的一部分。
据我所知,这之前工作正常,没有系统更改。
一些开箱即用的眼睛可以给一两个提示吗?
提前谢谢你
使用 become
可能会有帮助,
$ ansible all -m ping --become-user=root
192.168.1.5 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
如果您 运行 command/playbook 来自不同的用户,则需要提供 ssh 密码。
$ ansible all -m ping -e ansible_ssh_user=root -k
SSH password:
192.168.1.5 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
问题仍然与密钥共享有关。发现一个key变了(有人运行 keygen误操作)
ansible 用户和 root 用户之间的密钥不正确。
我遇到问题 运行 一些我在命令行中定义 ansible_user_ssh=root 的剧本 和 ssh 命令通过 ansible,returns 权限被拒绝。
HOST | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
"unreachable": true
}
我正在尝试排除故障,但没有找到根本原因。
来自 root 甚至清单(功能用户)文件中定义的用户的密钥已正确传播。 如果我从 root 用户或功能用户执行 ssh,它在那里没有问题。
如果我执行:
ansible -i /app/user/applications/inventory/commercialaseenv300-hosts -m ping -u root HOST
有效
如果我执行:
ansible -i /app/user/applications/inventory/commercialaseenv300-hosts -m ping -e ansible_ssh_user=root HOST
没用。 Returns 权限被拒绝
如果我执行:
sudo ansible -i /app/user/applications/inventory/commercialaseenv300-hosts -m ping -e ansible_ssh_user=root HOST
有效
如果我换成root用户执行:
ansible -i /app/user/applications/inventory/commercialaseenv300-hosts -m ping -e ansible_ssh_user=root HOST
有效
但我需要一个不起作用的脚本,因为它是大型脚本的一部分。 据我所知,这之前工作正常,没有系统更改。
一些开箱即用的眼睛可以给一两个提示吗? 提前谢谢你
使用 become
可能会有帮助,
$ ansible all -m ping --become-user=root
192.168.1.5 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
如果您 运行 command/playbook 来自不同的用户,则需要提供 ssh 密码。
$ ansible all -m ping -e ansible_ssh_user=root -k
SSH password:
192.168.1.5 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
问题仍然与密钥共享有关。发现一个key变了(有人运行 keygen误操作) ansible 用户和 root 用户之间的密钥不正确。