Github多账号仓库推送报403错误,如何解决?
解决多GitHub账号推送权限被拒的问题
兄弟,这个问题我太熟了——你现在的情况是Git默认用了Account-1的账号(rahulTcs)去访问Account-2的仓库(micheal的simple-demo),自然会触发403权限拒绝。给你几个实用的解决办法,按需选择:
方法1:给当前仓库的HTTPS地址指定Account-2用户名(快速临时解决)
HTTPS方式下Git会优先用全局保存的凭证,直接给project2的远程URL加上Account-2的用户名,就能强制Git用这个账号的身份推送:
- 先查看当前远程地址:
git remote -v - 修改为带用户名的HTTPS链接:
git remote set-url origin https://micheal@github.com/micheal/simple-demo.git - 下次执行
git push origin master时,Git会提示你输入Account-2的密码(或者个人访问令牌,现在GitHub已限制密码直接登录仓库操作),输入后就能正常推送了。
方法2:用SSH密钥区分账号(长期切换推荐,一劳永逸)
如果经常在两个账号间切换,SSH方式更省心,每个账号用独立的密钥:
- 为Account-2生成专属SSH密钥:
在终端执行:ssh-keygen -t ed25519 -C "your-account2-email@example.com"
生成过程中注意不要覆盖Account-1的密钥(默认文件名是id_ed25519,可以命名为id_ed25519_account2来区分) - 把新密钥添加到Account-2的GitHub账号:
执行cat ~/.ssh/id_ed25519_account2.pub复制密钥内容,然后登录Account-2的GitHub,进入Settings -> SSH and GPG keys,点击"New SSH key"粘贴添加。 - 配置SSH配置文件,让不同仓库对应不同密钥:
在~/.ssh/config(Windows路径是C:\Users\你的用户名\.ssh\config,如果没有就新建这个文件)里添加:Host github.com-account2 HostName github.com User git IdentityFile ~/.ssh/id_ed25519_account2 - 修改project2的远程URL为对应SSH地址:
git remote set-url origin git@github.com-account2:micheal/simple-demo.git
之后再推送,Git会自动用Account-2的密钥验证,不会和Account-1冲突。
方法3:清理全局Git凭证(临时应急,不推荐长期用)
如果只是偶尔切换账号,可以清空Git保存的全局凭证,下次推送时重新输入对应账号的信息:
- Windows:打开「凭据管理器」,找到「Windows凭据」里的GitHub相关条目,删除即可。
- Mac:终端执行
security delete-generic-password -a "github.com" - Linux:如果用的是libsecret凭证助手,执行
git config --global credential.helper unset,下次推送会重新提示输入账号密码。
内容的提问来源于stack exchange,提问作者Devrath
相关产品推荐
相关产品推荐

