Jenkins无法通过SSH连接Bitbucket,标签推送配置求助
解决Jenkins SSH连接Bitbucket仓库的密钥格式/权限问题
我帮你梳理几个能解决这个问题的关键步骤,都是实际踩坑总结出来的:
1. 先确认Jenkins里的SSH密钥格式完全正确
Jenkins对SSH私钥的格式要求特别严格,必须是纯PEM格式,不能有任何多余内容。很多人复制粘贴密钥时容易丢了首尾的标记行,或者带了多余的注释:
- 打开你本地的私钥文件(比如
id_rsa),确保开头是-----BEGIN RSA PRIVATE KEY-----,结尾是-----END RSA PRIVATE KEY-----,中间的密钥每行长度一致,没有断行或者多余空格。 - 回到Jenkins全局凭证编辑页面,把私钥重新完整粘贴一遍,包括首尾的标记行,一个字符都不能少,也别多添换行。
2. 检查Jenkins运行用户的权限和临时文件访问
错误里提到的C:\Windows\TEMP\jenkins-gitclient-sshxxxx.key是Jenkins临时生成的密钥文件,大概率是这个文件的权限出问题了:
- Windows上默认Jenkins是用
Local System账户运行的,这个账户对TEMP目录的权限可能有限制。你可以把Jenkins服务的运行账户改成你本地日常使用的账户(就是你IDE里能正常拉推代码的那个账户):- 打开Windows服务管理器,找到Jenkins服务。
- 右键选「属性」,切到「登录」标签页。
- 选「此账户」,输入你的本地用户名和密码,保存后重启Jenkins服务。
3. 手动测试Jenkins运行环境的SSH连接
在Jenkins所在的机器上,切换到Jenkins运行的用户账户,手动跑一遍Git命令测试:
git ls-remote -h -- git@bitbucket.org:myname/jenproject.git HEAD
- 如果这个命令也报错,那就是该用户的SSH配置有问题,和Jenkins无关。你需要在这个用户的家目录下(比如
C:\Users\[JenkinsUser]\.ssh)创建一个config文件,配置Bitbucket的SSH主机:Host bitbucket.org HostName bitbucket.org User git IdentityFile C:\path\to\your\private_key IdentitiesOnly yes - 如果手动命令能成功,那问题肯定出在Jenkins的凭证配置上,回到第一步重新核对密钥格式。
4. 确认Bitbucket的公钥和Jenkins私钥配对
别忽略最基础的检查:Bitbucket账户里添加的公钥,必须和Jenkins里存的私钥是一对的。
- 本地执行
ssh-keygen -y -f /path/to/your/private_key生成对应的公钥,然后去Bitbucket的账户设置里对比,确保公钥完全一致,包括结尾的注释(比如yourname@yourpc)。
5. 试试Jenkins的SSH Agent插件(终极方案)
如果上面的方法都不行,推荐用Jenkins的SSH Agent插件来管理密钥,它比原生的凭证配置更可靠:
- 先在Jenkins插件市场安装「SSH Agent」插件。
- 然后修改你的Jenkinsfile,用插件加载SSH凭证:
这里的「你的SSH凭证ID」可以在Jenkins凭证详情页找到,就是凭证的唯一标识字符串。pipeline { agent any stages { stage('Checkout Code') { steps { sshagent(credentials: ['你的SSH凭证ID']) { git url: 'git@bitbucket.org:myname/jenproject.git', branch: 'main' } } } } }
内容的提问来源于stack exchange,提问作者kar
相关产品推荐
相关产品推荐

