配置Jenkins与Git SSH密钥时遭遇主机密钥验证失败错误
解决Jenkins连接GitHub时的主机密钥验证失败问题
问题原因
Jenkins运行时使用的jenkins用户(而非你本地登录的用户)的SSH已知主机列表中没有GitHub的ED25519主机密钥,导致严格检查模式下连接失败。
解决方案
方法1:以jenkins用户身份自动添加主机密钥
- 切换到jenkins用户:
sudo su - jenkins - 执行SSH连接命令触发主机密钥添加:
ssh git@github.com - 当提示
Are you sure you want to continue connecting (yes/no/[fingerprint])?时,输入yes确认。 - 验证连接是否正常:
若返回仓库的引用信息,说明配置成功,退出jenkins用户会话即可。git ls-remote git@github.com:neetesshhr/sheildxwebpage.git
方法2:手动添加GitHub主机密钥到jenkins用户的known_hosts
- 获取GitHub官方的ED25519主机密钥:
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl - 确保jenkins用户的
.ssh目录存在并设置正确权限:sudo mkdir -p /var/lib/jenkins/.ssh sudo chown jenkins:jenkins /var/lib/jenkins/.ssh sudo chmod 700 /var/lib/jenkins/.ssh - 将主机密钥写入
known_hosts文件:sudo -u jenkins echo "github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl" >> /var/lib/jenkins/.ssh/known_hosts - 设置
known_hosts文件的权限:sudo chmod 600 /var/lib/jenkins/.ssh/known_hosts sudo chown jenkins:jenkins /var/lib/jenkins/.ssh/known_hosts
方法3:临时关闭严格主机密钥检查(不推荐)
若需临时应急,可在Jenkins全局工具配置中修改Git的执行参数:
- 进入Jenkins的「Manage Jenkins」→「Global Tool Configuration」
- 找到Git配置项,在「Additional Behaviours」中添加「Advanced clone behaviours」
- 在「Git executable parameters」中填入
-o StrictHostKeyChecking=no - 保存配置后重新运行Pipeline
⚠️ 此方法会关闭主机密钥验证,存在安全风险,仅建议临时测试使用。
额外检查
确保Jenkins凭据中配置的SSH私钥权限正确,jenkins用户需拥有该私钥的读取权限;同时确认GitHub仓库的访问权限已正确配置(公钥已添加到对应GitHub账户/仓库的部署密钥中)。
内容的提问来源于stack exchange,提问作者Neetesshhr
相关产品推荐
相关产品推荐

