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

GitLab/GitHub仓库推送失败:Permission denied (publickey)问题求助

解决Git SSH权限拒绝(Permission denied (publickey))的步骤

1. 确认SSH密钥已被加载

运行命令:

ssh-add -l

如果看不到你的密钥指纹,说明密钥没被ssh-agent加载,执行:

ssh-add ~/.ssh/你的密钥文件名

(默认密钥文件名是id_rsa,如果是自定义名称替换成实际名字)

2. 用官方命令测试SSH连接

别用仓库名,用平台官方测试命令:

  • GitHub测试:
ssh -T git@github.com
  • GitLab测试:
ssh -T git@gitlab.com

如果还是拒绝,去对应平台的SSH设置页面,检查你添加的公钥是否和本地~/.ssh/id_rsa.pub的内容完全一致,注意不要有多余空格或换行。

3. 检查Git远程仓库地址

运行:

git remote -v

确认远程地址是SSH格式(比如git@github.com:用户名/仓库名.git),如果是HTTPS格式,改成SSH:

git remote set-url origin git@github.com:用户名/仓库名.git

4. 排查SSH配置文件

打开~/.ssh/config(Windows路径是C:\Users\你的用户名\.ssh\config),确保针对平台的配置正确,示例:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/你的密钥文件名

如果有多个密钥,要保证每个Host对应的密钥文件不混淆。

5. 修正文件权限(核心)

SSH对权限要求严格,必须设置正确:

  • 密钥文件权限设为600:
chmod 600 ~/.ssh/id_rsa
  • .ssh目录权限设为700:
chmod 700 ~/.ssh
  • 公钥文件权限设为644:
chmod 644 ~/.ssh/id_rsa.pub

Windows用户右键文件→属性→安全,确保只有当前用户有读写权限,删除其他用户的权限。

6. 确认仓库权限

去GitHub/GitLab的仓库设置页面,检查你的账户是否还有写入权限——之前能推送现在失败,可能是权限被撤销,或者仓库归属发生了变更(比如从个人转到组织)。

如果以上步骤都无效,提供以下信息方便进一步排查:

  • ssh -vT git@github.com(GitHub)或ssh -vT git@gitlab.com(GitLab)的完整输出
  • git remote -v的输出
  • ~/.ssh/config的内容(敏感信息打码)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:22:04