已添加读写权限SSH Key至GitHub仍遇权限拒绝问题求助
解决Git Push时旧账号权限报错的问题
结合你描述的场景——新账号克隆、提交正常但push时触发旧账号权限拒绝,再加上你修改过~/.config权限的操作,核心问题大概率是Git还在沿用旧账号的认证身份或缓存信息,下面是几个针对性的解决步骤:
先确认Git的用户配置是否正确
先检查全局和当前仓库的Git用户信息,看看是不是还挂着旧账号的信息:git config --global user.name git config --global user.email git config --local user.name # 检查当前仓库的本地配置 git config --local user.email如果输出是旧账号的内容,用下面的命令更新为新账号信息:
git config --global user.name "你的新GitHub用户名" git config --global user.email "你的新GitHub注册邮箱" # 要是仓库有本地配置覆盖全局,别忘了同步更新本地的 git config --local user.name "你的新GitHub用户名" git config --local user.email "你的新GitHub注册邮箱"清理Git的凭证缓存
Git很可能缓存了旧账号的认证凭据,得把它清掉:- macOS用户:打开「钥匙串访问」,搜索「github.com」,删掉对应旧账号的凭证条目;
- Linux用户:执行
git credential-cache exit清除缓存,要是用的是libsecret凭证存储,直接去对应路径删除旧条目; - Windows用户:打开「控制面板→用户账户→凭据管理器」,找到Git相关的旧凭证删除即可。
检查SSH配置是否被权限修改影响
修改~/.config权限后,可能干扰了SSH配置的读取。先看看~/.ssh/config文件(如果存在的话)有没有绑定旧账号的密钥:cat ~/.ssh/config如果里面有类似下面的配置,把
IdentityFile改成新账号的私钥路径,或者直接删掉这段配置(让Git默认使用新密钥):Host github.com IdentityFile ~/.ssh/old_account_id_rsa验证SSH连接的身份
测试当前SSH连接GitHub时用的是哪个账号:ssh -T git@github.com如果返回的还是旧账号的欢迎语,说明SSH默认用的还是旧密钥。你可以指定新密钥测试:
ssh -i ~/.ssh/new_account_id_rsa -T git@github.com要是这个命令能正确返回新账号的提示,就把新密钥设为默认(要么改
~/.ssh/config,要么把新密钥重命名为id_rsa,记得备份旧密钥)。确认仓库的远程URL是否正确
最后检查下当前仓库的远程地址是不是新账号的仓库:git remote -v如果显示的是旧账号的仓库路径,用下面的命令修改:
git remote set-url origin git@github.com:你的新用户名/ptscripts.git
按这些步骤逐一排查,应该就能解决权限被旧账号拒绝的问题了。
内容的提问来源于stack exchange,提问作者nothing
相关产品推荐
相关产品推荐

