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文件相互独立。解决方法:- 登录Jenkins服务器,切换到jenkins用户:
sudo su - jenkins - 执行一次
ssh user@192.168.100.100,按提示输入yes确认添加主机密钥 - 或者直接批量写入主机密钥:
ssh-keyscan 192.168.100.100 >> ~/.ssh/known_hosts(如果jenkins用户的home目录不是默认路径,替换成实际路径)
- 登录Jenkins服务器,切换到jenkins用户:
确保Jenkins任务正确引用SSH凭证
如果你用的是自由风格项目,不要直接写裸的ssh命令,应该借助SSH Agent插件加载凭证:- 在任务的「构建步骤」中添加「SSH Agent」
- 选择你在全局凭证中添加的SSH密钥
- 在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
相关产品推荐
相关产品推荐

