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

推送代码到GitHub提示Permission denied(publickey)如何解决

GitHub SSH推送报publickey权限拒绝排查方案

对应终端报错信息如下:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

按以下顺序逐步排查即可解决:

1. 确认本地SSH密钥已被代理加载

  • 先在Cmder中启动SSH代理:如果用的是Cmder的bash环境,执行eval $(ssh-agent -s);如果是PowerShell/cmd环境,执行start-ssh-agent
  • 执行密钥添加命令,默认生成的RSA密钥执行ssh-add ~/.ssh/id_rsa即可,如果生成密钥时自定义了文件名,替换为对应私钥的实际路径
  • 执行ssh-add -l验证,如果输出了对应密钥的指纹信息,说明加载成功;如果提示无对应密钥,回到密钥生成目录确认私钥文件名、路径是否正确。

2. 确认公钥已正确绑定GitHub账号

  • 找到密钥对应的公钥文件(后缀为.pub的文件,默认路径为~/.ssh/id_rsa.pub),用文本编辑器打开后完整复制全部内容,不要遗漏开头的加密类型标识、结尾的邮箱注释,也不要额外复制空格或换行
  • 进入GitHub账号的SSH密钥设置页面,新增SSH密钥,将复制的公钥内容粘贴后保存。注意不要泄露无.pub后缀的私钥文件内容。
  • 执行ssh -T git@github.com验证连通性,如果返回Hi 你的GitHub用户名! You've successfully authenticated, but GitHub does not provide shell access.说明密钥认证链路正常;如果仍报权限错误,回到上一步检查公钥是否复制完整、是否绑定到了正确的GitHub账号。

3. 检查本地仓库远程地址配置

  • 进入本地项目目录,执行git remote -v查看origin远程仓库地址,正确的SSH格式地址应为git@github.com:你的GitHub用户名/目标仓库名.git
  • 如果地址是https://github.com/xxx/xxx.git这类HTTPS格式,执行git remote set-url origin git@github.com:你的GitHub用户名/目标仓库名.git替换为SSH地址
  • 核对地址中的用户名、仓库名是否存在拼写错误、大小写错误,地址不匹配对应不存在的仓库时也会抛出同类报错。

4. 特殊场景处理

  • 本地存在多对SSH密钥对应多个账号/平台时,需要在~/.ssh/config文件中添加配置,指定访问GitHub时使用的私钥,配置示例:
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/你给GitHub使用的私钥文件路径
  IdentitiesOnly yes
  • 如果处于公司网络、开启了网络代理导致22端口被拦截,可以修改上述配置,将SSH连接走443端口:
Host github.com
  HostName ssh.github.com
  User git
  Port 443
  IdentityFile ~/.ssh/你给GitHub使用的私钥文件路径
  IdentitiesOnly yes
  • 如果目标仓库不是你个人账号下的仓库,确认当前绑定密钥的账号已经被添加为仓库协作者,拥有推送权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:18:16