多GitHub账户权限错误:推送代码时提示权限被拒如何解决?
解决GitHub权限错误:切换至新账户并正常推送代码
你遇到的这个权限问题,核心原因是当前Git操作仍在使用旧账户的身份认证信息——哪怕你已经给新账户添加了SSH密钥,系统还是优先调用旧的关联配置。咱们一步步来彻底解决:
1. 先修正本地Git的账户配置
首先确认你的本地仓库(或全局Git设置)是不是还挂着旧账户的信息:
- 进入项目目录,在终端运行:
如果输出是旧账户的用户名和邮箱,立刻改成新账户的信息:git config user.name git config user.email# 仅当前项目生效 git config user.name "你的新GitHub用户名" git config user.email "你的新GitHub绑定邮箱" # 全局所有仓库生效,加 --global 参数 git config --global user.name "你的新GitHub用户名" git config --global user.email "你的新GitHub绑定邮箱"
2. 强制指定SSH密钥使用新账户
系统可能还在默认使用旧账户的SSH密钥,咱们先验证当前SSH连接的身份:
- 运行测试命令:
如果输出是ssh -T git@github.comHi JoSmith17! You've successfully authenticated...,说明现在用的还是旧密钥。
配置SSH优先使用新密钥:
- 先查看本地所有SSH密钥文件:
你会看到旧密钥(比如ls -la ~/.sshid_rsa/id_rsa.pub)和你新创建的密钥文件(比如id_rsa_new/id_rsa_new.pub)。 - 编辑(或新建)SSH配置文件,指定GitHub连接用新密钥:
粘贴以下内容(替换成你的新密钥文件名):nano ~/.ssh/config
保存退出(nano中按Host github.com HostName github.com User git IdentityFile ~/.ssh/你的新密钥文件名(比如id_rsa_new)Ctrl+O回车,再按Ctrl+X)。 - 重新测试SSH连接,现在应该输出新账户的认证信息:
ssh -T git@github.com
3. 更新远程仓库的关联URL
有时候本地仓库的远程地址还是绑定旧账户的仓库,检查并修正:
- 查看当前远程地址:
如果输出是git remote -vgit@github.com:JoSmith17/beerholic-pokemon.git,立刻改成新账户的仓库地址:git remote set-url origin git@github.com:techjems17/beerholic-pokemon.git
4. 清空旧SSH缓存(可选,若上述步骤无效)
系统可能缓存了旧的SSH连接信息,清空后重新加载新密钥:
# 清空所有缓存的SSH密钥 ssh-add -D # 添加新密钥到SSH代理 ssh-add ~/.ssh/你的新密钥文件名
最后测试推送
现在尝试重新推送代码:
git push origin 你的分支名(比如main)
这样就能彻底切换到新账户,解决权限问题了。
内容的提问来源于stack exchange,提问作者Jordan Smith
相关产品推荐
相关产品推荐

