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

Jenkins中Git Clone正常但Git Pull(SSH)失败的问题咨询

解决Jenkins中Git CLI执行git pull时未复用SSH凭据的问题

我之前也碰到过一模一样的情况——Jenkins Git插件用SSH凭据克隆代码没问题,但自己敲git pull就炸了,报错和你完全一致。核心问题在于:Git插件是通过Jenkins的凭据系统来管理密钥的,但原生Git CLI根本不知道Jenkins的凭据存储,它只会按默认规则找SSH密钥和主机验证文件。下面是我试过的几个有效解决方案:

1. 用环境变量给Git CLI指定SSH密钥

直接通过GIT_SSH_COMMAND环境变量告诉Git该用哪个密钥,还能顺带跳过主机密钥验证(CI环境里这个操作很常见,安全性也能接受):

# 先把Jenkins存储的SSH私钥导出到临时文件(可以用凭据绑定插件把私钥放到SSH_PRIVATE_KEY环境变量里)
echo "$SSH_PRIVATE_KEY" > /tmp/jenkins_ssh_key
chmod 600 /tmp/jenkins_ssh_key  # SSH密钥必须是600权限才有效

# 告诉Git用这个密钥执行SSH连接
export GIT_SSH_COMMAND="ssh -i /tmp/jenkins_ssh_key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
git pull origin master

如果你不知道怎么把Jenkins的SSH凭据导出到环境变量,记得装个Credentials Binding Plugin,在构建步骤里选"Bindings" -> "SSH User Private Key",就能把私钥绑定到自定义的环境变量里了。

2. 提前配置Jenkins用户的known_hosts

报错里的Host key verification failed本质是Git CLI找不到远程Git服务器的主机密钥。你可以提前把服务器的密钥加到Jenkins运行用户(一般是jenkins用户)的known_hosts文件里:

# 先扫描Git服务器的主机密钥,追加到jenkins用户的known_hosts里
ssh-keyscan xxx >> /var/lib/jenkins/.ssh/known_hosts
# 给文件设置正确权限
chmod 600 /var/lib/jenkins/.ssh/known_hosts
chown jenkins:jenkins /var/lib/jenkins/.ssh/known_hosts

做完这一步,再执行git pull就不会卡主机验证了,但还是要确保Git能找到私钥——要么把私钥放到/var/lib/jenkins/.ssh/id_rsa,要么还是用上面的GIT_SSH_COMMAND指定路径。

3. 别用Git CLI了,直接用Jenkins Git插件做pull

如果不想折腾命令行,最省心的办法就是用Jenkins自带的Git插件来执行拉取操作:在构建步骤里选"Git",然后配置"Branch Specifier"为*/master,再勾选"Pull before build"(或者直接配置拉取动作)。这样插件会自动复用之前配置的SSH凭据,完全不用管CLI的那套规则。

4. 检查Jenkins执行用户的权限

有时候构建步骤是用sudo或者其他用户执行的,导致Git CLI找不到Jenkins用户的SSH配置。你可以在构建步骤里先执行whoami看看当前用户是不是jenkins,如果不是,要么切换用户,要么给当前用户配置对应的SSH密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:34:11