You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ansible可正常Ping及SSH连接目标主机,但Jenkins调用Playbook部署时出现Host key verification failed错误的解决方案求助

解决Jenkins运行Ansible时的Host Key Verification Failed问题

你的问题根源其实很明确:Jenkins服务运行的系统用户和你手动操作时使用的用户不是同一个,导致两者的~/.ssh/known_hosts文件完全独立——你手动SSH时记录的新VM主机密钥存在于你个人用户的known_hosts中,但Jenkins使用的jenkins系统用户的known_hosts里并没有这条记录,所以触发了密钥校验失败。

下面是无需关闭host_key_checking的永久解决方案:

方法1:切换到jenkins用户手动验证一次

  1. 在Jenkins服务器上,切换到jenkins系统用户:
    sudo su - jenkins
    
  2. 手动SSH连接你的新VM:
    ssh my_machine
    
  3. 当出现主机密钥确认提示时,输入yes并回车,完成后退出SSH连接和jenkins用户。

这会将新VM的主机密钥添加到jenkins用户的~/.ssh/known_hosts文件中,后续Jenkins运行Ansible时就能正常通过校验。

方法2:用ssh-keyscan自动化导入密钥(无交互)

如果你需要自动化完成这个操作,避免手动交互,可以直接用ssh-keyscan命令将新VM的密钥写入jenkins用户的known_hosts:

sudo su - jenkins -c "ssh-keyscan my_machine >> ~/.ssh/known_hosts"

这条命令会以jenkins用户身份执行,自动获取并添加目标主机的SSH密钥。

验证解决方案

完成上述操作后,切换到jenkins用户,运行Ansible ping命令验证:

sudo su - jenkins -c "ansible -m ping my_machine"

如果返回正常的pong响应,说明问题已经解决,此时再运行你的Jenkins项目就不会再出现密钥校验失败的错误了。


内容的提问来源于stack exchange,提问作者SocksSocksSocks

火山引擎 最新活动