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

使用Deploy Key集成Jenkins与GitHub时出现访问被拒绝问题

我来帮你排查这个Jenkins和GitHub连接失败的问题——这种情况我踩过无数次,大概率是Jenkins运行用户的SSH密钥配置不对,或者权限、网络层面的小问题,咱们一步步来解决:

1. 先确认Jenkins运行用户的SSH密钥是不是正确的

你之前是在登录Jenkins服务器的用户下生成的密钥对吧?但Jenkins其实是用自己的运行用户(通常是jenkins)来执行Git命令的,这俩用户的密钥是分开的!

  • 切换到Jenkins运行用户:sudo su - jenkins(如果是自定义用户就换成对应的用户名)
  • 给这个用户生成专属的SSH密钥对:ssh-keygen -t ed25519 -C "jenkins@your-server-domain.com",一路回车就行,别设密码,不然Jenkins运行时要手动输入密码,肯定失败
  • 复制生成的公钥:cat ~/.ssh/id_ed25519.pub,把这段内容粘贴到GitHub仓库的Deploy Keys里(记得勾选"Allow write access"如果你的任务需要推送代码),或者你的个人账号SSH Keys里
2. 手动测试Git连接,定位具体错误

在Jenkins用户下直接跑报错里的命令,能帮你快速找到问题:

  • 先测试SSH连通性:ssh -T git@github.com
    • 如果返回Hi {your-github-username}! You've successfully authenticated, but GitHub does not provide shell access.,说明SSH连接完全没问题
    • 如果报错Permission denied (publickey),那就是密钥权限或者识别的问题:
      • 检查.ssh目录权限:chmod 700 ~/.ssh(必须是700,不然SSH会拒绝读取)
      • 检查私钥权限:chmod 600 ~/.ssh/id_ed25519(私钥必须是600,不能让其他用户读写)
      • 看看.ssh目录下有没有config文件,如果有,确认里面没有干扰GitHub连接的配置
  • 再跑报错里的ls-remote命令:/opt/{user}/git/bin/git ls-remote -h git@github.com:{your-project}.git,看具体输出是什么,比如有没有路径错误、权限问题
3. 检查Jenkins的Git工具配置
  • 进入Jenkins的「全局工具配置」,找到Git的配置项,确认Git的路径和你手动测试用的/opt/{user}/git/bin/git完全一致,别配置错了路径
  • 如果你的Jenkins是用Docker容器运行的,还要确认你生成的密钥对已经挂载到了容器内Jenkins用户的~/.ssh目录下,不然容器里的Jenkins根本看不到密钥
4. 排查网络和防火墙问题
  • 确认Jenkins服务器能访问GitHub的SSH端口(22):telnet github.com 22,如果能连通说明网络没问题;如果连不上,检查服务器的防火墙规则,或者是不是公司网络限制了SSH访问
  • 如果服务器用了代理,要确保Jenkins运行用户的环境变量里配置了正确的代理(SSH连接可能需要在.ssh/config里单独配置代理,比如添加ProxyCommand)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:35:28