You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GitLab无法推送代码:Permission denied (publickey)问题求助

解决GitLab推送时的Permission denied (publickey)问题

这种公钥权限问题是Git SSH推送最常见的坑之一,别担心,咱们一步步来排查解决:

  • 检查本地SSH密钥对是否存在
    先打开终端(或Git Bash),运行以下命令查看你的~/.ssh目录下有没有SSH密钥文件:

    ls -la ~/.ssh
    

    如果看不到类似id_ed25519(私钥)和id_ed25519.pub(公钥)的文件,说明你还没生成密钥对。可以用这条命令生成(把邮箱换成你GitLab账户绑定的邮箱):

    ssh-keygen -t ed25519 -C "your_email@example.com"
    

    运行后一路按回车就行,不需要设置密码(当然如果想更安全也可以设置,推送时会需要输入)。

  • 把公钥添加到你的GitLab账户
    生成密钥后,查看公钥内容并复制:

    cat ~/.ssh/id_ed25519.pub
    

    (如果是用RSA密钥的话,替换成id_rsa.pub
    登录GitLab后,点击右上角头像 → SettingsSSH Keys,把复制的公钥内容粘贴到「Key」输入框里,给这个密钥起个好记的标题(比如你的本地机器名),然后点击「Add key」。

  • 测试SSH连接是否正常
    回到终端,运行这条命令测试和GitLab的SSH连接:

    ssh -T git@gitlab.com
    

    如果看到类似Welcome to GitLab, @你的用户名!的提示,说明连接成功了,这时候再尝试git push origin master应该就能正常推送了。

    如果测试还是失败,可能是SSH代理没加载你的私钥,先启动SSH代理:

    eval "$(ssh-agent -s)"
    

    然后把私钥添加到代理:

    ssh-add ~/.ssh/id_ed25519
    
  • 额外排查小细节

    • 确认你的仓库远程地址是正确的SSH格式(你已经用git remote -v确认过是git@gitlab.com:projects/MyPrj.git,这部分没问题)
    • 检查~/.ssh目录和密钥文件的权限,避免权限太宽导致被拒绝:
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/id_ed25519
      
    • 如果你是Windows用户,建议用Git Bash来执行这些命令,避免系统权限或者OpenSSH服务未开启的问题。

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

火山引擎 最新活动