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

SSH认证方式无法向GitLab远程仓库执行git push操作求助

SSH认证方式无法向GitLab远程仓库执行git push操作求助

这种情况确实挺让人头疼的——明明ssh -T gitlab能成功返回欢迎信息,偏偏执行git push就报公钥权限拒绝的错误,我之前也碰到过类似的坑,给你几个实用的排查和解决方向:

  • 检查本地Git仓库的远程地址是否匹配SSH配置
    很多时候问题出在远程地址的写法上:你的~/.ssh/config里配置的Host是gitlab,但如果本地仓库的远程地址还是默认的git@gitlab.com:你的用户名/你的仓库名.git,那Git在push时不会自动关联到你配置的密钥文件。
    先查看当前远程地址:

    git remote -v
    

    如果地址里是gitlab.com而不是你配置的Host名gitlab,可以修改成匹配的格式:

    git remote set-url origin git@gitlab:你的用户名/你的仓库名.git
    
  • 调试Git Push时实际使用的SSH密钥
    直接看Git在push过程中用了哪个密钥,能快速定位问题。执行带调试信息的push命令:

    GIT_SSH_COMMAND="ssh -v" git push
    

    看输出里的debug1: identity file xxx相关内容,确认是不是指向你配置的~/.ssh/conf.d/personal/id_ed25519_gitlab。如果不是,说明Git没读取到你的SSH配置文件。

  • 确保SSH配置文件和目录的权限符合要求
    SSH对文件权限的要求非常严格,权限不对会直接忽略配置:

    • 把~/.ssh目录权限改成700:chmod 700 ~/.ssh
    • 把~/.ssh/config文件权限改成600:chmod 600 ~/.ssh/config
      另外,也可以试试把IdentityFile的路径改成绝对路径,比如/home/你的用户名/.ssh/conf.d/personal/id_ed25519_gitlab,避免相对路径解析出错。
  • 确认GitLab仓库的访问权限
    虽然你能通过SSH登录GitLab,但要确保你的账号确实拥有目标仓库的push权限:
    登录GitLab网页端,进入目标仓库的「Settings」→「Members」,检查你的账号是否在成员列表里,且权限至少是「Developer」级别(只有Guest权限是无法push的)。

  • 排查SSH Agent缓存的旧密钥
    有时候SSH Agent会缓存旧的密钥,导致Git用了错误的密钥进行认证。可以重启Agent并重新添加你的密钥:

    # 关闭当前SSH Agent
    ssh-agent -k
    # 重新启动Agent
    eval $(ssh-agent -s)
    # 添加你的GitLab密钥
    ssh-add ~/.ssh/conf.d/personal/id_ed25519_gitlab
    

    完成后再尝试执行git push。

备注:内容来源于stack exchange,提问作者Nine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:17:59