Git推送GitHub仓库报权限拒绝错误的排查解决方案
GitHub SSH推送权限报错修复方案
问题表现
执行Git clone可正常拉取代码,但推送分支时返回如下报错:
(base) guoling@Guo-MacBook-Pro test % git push --set-upstream origin test-branch ERROR: Permission to guoling9419/test.git denied to myGitHubUsername. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
运行环境为macOS Monterey 12.4,已生成SSH公私钥对并将公钥添加至GitHub账号,此前意外覆盖过~/.ssh/config文件,修复后调试结果如下:
- 执行
ssh -T git@github.com返回Hi myGitHubUsername! You've successfully authenticated, but GitHub does not provide shell access. - 执行
ssh github返回ssh: Could not resolve hostname github: nodename nor servname provided, or not known - 执行
eval "$(ssh-agent -s)"返回Agent pid 50031 - 执行
ssh-add -l -E sha256、ssh-add -l -E md5均返回The agent has no identities.
根因判断
ssh -T认证成功说明公钥已正确绑定GitHub账号,网络链路、公钥配置本身无问题ssh-add返回无身份信息,说明ssh-agent未加载本地私钥,是覆盖ssh配置文件后常见的加载异常ssh github解析失败属于正常现象,当前config中配置的Host别名为github.com,不存在github这个别名,无需处理
修复步骤
- 修复SSH文件权限,SSH对配置、私钥文件权限有严格要求,权限不符合会直接拒绝读取:
chmod 600 ~/.ssh/config chmod 600 ~/.ssh/id_rsa - 将私钥加载到ssh-agent并写入macOS钥匙串,避免每次重启后需要重新加载:
执行后如果提示输入私钥密码,填写生成密钥时设置的密码即可。执行完成后运行ssh-add --apple-use-keychain ~/.ssh/id_rsassh-add -l,如果能输出对应密钥的指纹信息,说明加载成功。 - 校验本地仓库关联的远程仓库地址:
进入本地仓库目录执行git remote -v,查看origin对应的推送、拉取地址。如果地址为HTTPS格式,或SSH地址中仓库所属用户名、仓库名书写错误,执行如下命令修正为正确的SSH地址:git remote set-url origin git@github.com:guoling9419/test.git - 验证推送:
先重新执行ssh -T git@github.com确认认证正常,再执行推送命令即可:git push --set-upstream origin test-branch
内容的提问来源于stack exchange,提问作者Ling Guo
相关产品推荐
相关产品推荐

