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

使用SSH推送GitLab代码失败,提示无项目推送权限如何解决?

GitLab推送权限错误(ERROR: You are not allowed to push code to this project.)解决方法
  • 确认SSH密钥的绑定层级
    你生成的id_rsa_2.pub要添加到GitLab账户的SSH密钥列表(账户设置→SSH Keys),而不是仓库的Deploy Keys。仓库级的Deploy Keys默认是只读权限,即便勾选允许推送,也不如账户级密钥直接关联你的身份权限可靠。

  • 强制Git为当前仓库使用新密钥
    多SSH密钥环境下,Git默认优先用id_rsa,不会自动切换到id_rsa_2。可以通过两种方式指定:

    1. 配置SSH规则:
      在~/.ssh/config文件中添加(没有就新建):
      Host gitlab-custom
          HostName gitlab.com
          User git
          IdentityFile ~/.ssh/id_rsa_2
      
      然后修改远程仓库地址:
      git remote set-url origin gitlab-custom:<你的用户名>/<仓库名>.git
      
    2. 推送时临时指定密钥:
      GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_2" git push origin main
      
  • 验证SSH连接的有效性
    执行命令测试新密钥是否能正确连接GitLab:

    ssh -T -i ~/.ssh/id_rsa_2 git@gitlab.com
    

    如果返回Welcome to GitLab, @<你的用户名>!,说明密钥验证通过;如果失败,检查:

    • id_rsa_2.pub是否完整添加到GitLab账户
    • 私钥权限是否为600(执行chmod 600 ~/.ssh/id_rsa_2修复)
  • 检查仓库的实际权限配置
    即便设置了Everyone with access,也要确认:

    • 该权限对应的角色是开发者/维护者(允许推送),而非仅访客(只读)
    • 你的GitLab账户是否被正确识别为仓库的有权限成员(进入仓库→设置→权限→项目成员查看)
  • 核对Git用户邮箱与GitLab绑定邮箱
    虽然全局用户信息不直接影响SSH推送权限,但如果GitLab开启了提交邮箱验证,要确保git config --global user.email是你GitLab账户绑定的邮箱,避免后续提交出现身份不匹配问题。

内容的提问来源于stack exchange,提问作者ua.kvitka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:05:15