配置双GitHub SSH账号后git push权限拒绝,请求技术支持
解决多GitHub账号SSH Push权限拒绝问题
核心问题定位
你当前push使用的远程仓库URL是默认的github.com:personal/repo.git,未用到~/.ssh/config里定义的github.com-personal别名,导致Git没有加载对应personal账号的SSH密钥,从而触发权限拒绝。
分步解决步骤
1. 检查并修改远程仓库URL
- 执行命令查看当前远程URL:
若输出类似以下内容,说明URL未使用别名:git remote -vorigin git@github.com:personal/repo.git (fetch) origin git@github.com:personal/repo.git (push) - 修改远程URL为别名格式:
git remote set-url origin git@github.com-personal:personal/repo.git - 再次执行
git remote -v确认,输出应变为:origin git@github.com-personal:personal/repo.git (fetch) origin git@github.com-personal:personal/repo.git (push)
2. 验证SSH连接有效性
执行命令测试personal账号的SSH连接:
ssh -T git@github.com-personal
如果返回Hi personal! You've successfully authenticated, but GitHub does not provide shell access.,说明SSH配置正常;若报错,继续以下排查:
排查SSH配置与密钥
- 检查
~/.ssh/config格式:确保配置项用空格缩进(不要用制表符),且IdentityFile路径正确,确认~/.ssh/id_ed25519_personal文件存在。 - 修正密钥文件权限(权限过高会被SSH拒绝):
chmod 600 ~/.ssh/config chmod 600 ~/.ssh/id_ed25519_personal chmod 644 ~/.ssh/id_ed25519_personal.pub - 确认公钥已添加到GitHub:登录personal账号,进入Settings → SSH and GPG keys,检查是否存在
id_ed25519_personal.pub的内容,且状态为有效。
3. 匹配本地Git用户配置(可选)
虽然push权限由SSH密钥决定,但本地仓库用户信息建议与GitHub账号一致,避免commit信息混乱:
- 查看当前仓库的用户配置:
git config user.name git config user.email - 若不匹配,执行以下命令修改(仅当前仓库生效,不要加
--global):git config user.name "personal" git config user.email "你的personal账号邮箱"
完成以上步骤后,重新执行git push即可正常推送。
内容的提问来源于stack exchange,提问作者hotenthusiasm
相关产品推荐
相关产品推荐

