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

GitLab配置SSH镜像推送GitHub报publickey权限拒绝问题

故障原因
  • 本地执行git clone、sudo ssh -vT git@github.com验证连通成功,仅代表本地机器对应用户目录下存储的SSH私钥有权限访问GitHub仓库:其中sudo调用的是本地root用户的SSH密钥,普通clone调用的是本地当前登录用户的SSH密钥,这两个验证结果和GitLab服务端的镜像推送身份完全无关。验证日志中返回Exit status 1是正常现象,因为GitHub本身不提供交互式shell访问,不代表连接配置错误。
  • GitLab的SSH公钥认证镜像推送逻辑,不会复用你本地机器的任何密钥:配置镜像时GitLab会自动为该镜像条目生成一对独立的专属SSH密钥对,后续会用这对密钥的私钥发起对GitHub的SSH连接,必须把对应公钥提前添加到GitHub侧的信任列表才能认证通过
  • 当前返回Permission denied (publickey)报错,核心原因就是GitHub侧没有添加GitLab生成的对应公钥,直接拒绝了GitLab服务器的连接请求
修复步骤
  • 进入GitLab对应项目的Settings > Repository > Mirroring repositories配置页面
  • 找到你已经创建的GitHub推送镜像条目,点击条目旁的「复制SSH公钥」按钮,将GitLab自动生成的公钥完整复制到剪贴板
  • 登录目标GitHub账号,进入Settings > SSH and GPG keys页面,点击「New SSH key」
  • 自定义填写便于识别的Key标题(比如GitLab-Project-Mirror),将刚才复制的GitLab公钥完整粘贴到Key输入框,点击保存
  • 回到GitLab镜像配置页,点击对应镜像条目旁的重试按钮,手动触发同步即可

额外注意事项:

  • 如果目标GitHub仓库归属组织账号,需要确认组织未开启第三方SSH密钥访问限制;也可以选择将GitLab生成的公钥添加到对应GitHub仓库的「Deploy Keys」列表中,同时勾选「Allow write access」权限,同样可以满足推送要求
  • 配置时确认已点击「Detect host keys」按钮完成GitHub主机指纹校验,避免后续出现主机信任校验失败的问题
  • 仓库URL严格按照ssh://git@github.com/<GitHub用户名>/<仓库名>.git格式填写,不要遗漏.git后缀
配置参考截图

GitHub配置截图
GitLab配置截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:15:11