Github SSH仓库推送报Permission denied (public key)问题咨询
Git push SSH公钥报错解决方案
问题根因
你当前第二个仓库的远程地址使用SSH协议进行身份验证,而你本地未配置关联GitHub账号的SSH公钥,因此触发权限报错;第一个仓库使用HTTPS协议,走令牌/账号验证流程,所以可以正常推送。
解决方案(二选一即可)
方案1:切换为HTTPS协议(操作更简单,和第一个仓库配置一致)
- 进入第二个仓库的本地根目录,执行修改远程地址命令:
git remote set-url origin https://github.com/myloginname/XXX/PQRS.git
注意:将上述命令中的地址替换为你自己第二个GitHub仓库的实际HTTPS地址,可以在GitHub对应仓库的「<> Code」下拉框中选择HTTPS后复制获取。
- 验证配置是否生效,执行:
git remote -v
确认返回的origin fetch和push地址均为HTTPS开头即可。 - 后续执行
git push origin即可正常推送,验证身份时GitHub账号密码栏的密码位置,填写你生成的GitHub个人访问令牌(PAT)即可。
方案2:配置SSH公钥,保留SSH协议
- 检查本地是否存在已有SSH公钥:
- Mac/Linux执行:
ls ~/.ssh - Windows查看目录:
C:\Users\你的用户名\.ssh
如果目录下存在id_ed25519.pub或者id_rsa.pub文件,直接使用即可;如果不存在,执行命令生成新密钥:ssh-keygen -t ed25519 -C "你GitHub绑定的邮箱地址"
全程按回车保持默认配置即可。
- Mac/Linux执行:
- 打开公钥文件,复制文件内全部内容,进入GitHub账号设置页,找到「SSH and GPG keys」选项,点击「New SSH key」,将复制的公钥内容粘贴后保存。
- 验证SSH连接是否生效,执行:
ssh -T git@github.com
如果返回Hi 你的GitHub用户名! You've successfully authenticated...即代表配置成功。 - 回到仓库目录执行
git push origin即可正常推送。
注意事项
修改远程地址时请替换为你自己仓库的真实地址,不要直接使用示例中的占位符内容。
内容的提问来源于stack exchange,提问作者SSN
相关产品推荐
相关产品推荐

