You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins执行SSH脚本报错Host key verification failed排查求助

排查Jenkins SSH任务"Host key verification failed"问题的方向

核心原因

这个错误是Jenkins运行用户的known_hosts文件中没有记录目标虚拟机(192.168.100.100)的主机密钥,导致SSH连接时无法验证主机身份——和你添加的SSH登录凭证本身无关。

具体排查步骤

  • 让Jenkins运行用户信任目标主机密钥
    Jenkins默认以jenkins用户运行,和你控制台操作的用户不是同一个,两者的known_hosts文件相互独立。解决方法:

    1. 登录Jenkins服务器,切换到jenkins用户:sudo su - jenkins
    2. 执行一次ssh user@192.168.100.100,按提示输入yes确认添加主机密钥
    3. 或者直接批量写入主机密钥:ssh-keyscan 192.168.100.100 >> ~/.ssh/known_hosts(如果jenkins用户的home目录不是默认路径,替换成实际路径)
  • 确保Jenkins任务正确引用SSH凭证
    如果你用的是自由风格项目,不要直接写裸的ssh命令,应该借助SSH Agent插件加载凭证:

    1. 在任务的「构建步骤」中添加「SSH Agent」
    2. 选择你在全局凭证中添加的SSH密钥
    3. 在SSH Agent的「执行shell」里运行ssh user@192.168.100.100 'ls'
  • 检查密钥文件权限
    不管是Jenkins用户目录下的密钥,还是凭证管理加载的密钥,都要确保权限合规:

    • .ssh目录权限:700
    • 私钥文件(id_rsa)权限:600
    • 公钥文件(id_rsa.pub)权限:644
      可以用命令修正:chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_rsa && chmod 644 ~/.ssh/id_rsa.pub
  • 验证目标主机的authorized_keys配置
    你在目标虚拟机生成的id_rsa公钥,必须添加到目标机器user用户的~/.ssh/authorized_keys文件中,同时确保该文件权限为600,.ssh目录权限为700。

  • 测试时临时跳过主机验证(仅限调试)
    若要快速确认是否是主机密钥问题,可以在ssh命令中添加参数:ssh -o StrictHostKeyChecking=no user@192.168.100.100 'ls',但此方法会降低安全性,生产环境禁止使用。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:15:51