ssh 身份验证的 Ansible 问题

Ansible issue with ssh authentication

我已经围绕这个问题搜索了一段时间,但没有找到任何有用的东西。

我们正在使用 ansible 来自动化我们的 Juniper 设备,因此使用 ansible juniper 模块。例如,当我尝试使用“junos_facts”时,我可以在 host1 上毫无问题地执行它,但是在 host2 上,当我在 cli

中添加 -k 时,我得到 PasswordRequiredException 或 AuthenticationException
TASK [proact-junos-test : Gather JunOS facts] ***************************************************************************************************************************************************
fatal: [host2]: FAILED! => {"changed": false, "msg": "PasswordRequiredException('Private key file is encrypted')"}
ok: [host1]

我在 cli、ansible.cfg、剧本本身中尝试了所有可能的参数组合。由于某种原因,它适用于一台主机,但不适用于另一台主机。我在两台主机上都部署了相同的密钥,并将其存储在我的 ssh-agent 中。我可以毫无问题地连接到两台主机。

谁能帮我解决这个问题?谢谢

据我了解,问题是 ssh 密钥已加密。尝试将 ssh 密钥添加到 ssh 代理(如果有的话)。

如果你没有,有一个简单的技巧:

eval $(ssh-agent)
ssh-add path/to/private/ssh/key
ansible ...

如果您 运行 在 CI/CD 环境中,您需要与 ssh-add 讨论询问密码的方式,但那是另一回事。

对于遇到相同问题的任何人,问题是远程主机不接受我的 SSH 密钥算法,因为自 Paramiko 2.9 以来,它已被弃用。

所以,我安装了 Paramike 2.8.1 并且它有效