同一Mac配置双Git账户,推送个人私有仓库遇权限拒绝问题
问题分析与解决方案
问题根源
- SSH配置中
x-GitHub的User字段设置错误:GitHub的SSH连接固定使用git作为用户,而非你的工作账户名x。当SSH代理中存在多个密钥时,会优先尝试匹配的密钥,导致推送时错误使用了工作账户的密钥,触发权限拒绝。 Nethsara的Host配置缺少User git字段,SSH连接时用户身份不明确,可能引发密钥匹配逻辑混乱。
解决方案
1. 修正SSH配置文件
编辑~/.ssh/config,调整为以下内容:
Host x-GitHub HostName github.com User git PreferredAuthentications publickey IdentityFile /Users/siyum/.ssh/x-GitHub UseKeychain yes AddKeysToAgent yes Host Nethsara HostName github.com User git PreferredAuthentications publickey IdentityFile /Users/siyum/.ssh/nethsara UseKeychain yes AddKeysToAgent yes
2. 验证SSH连接有效性
分别测试两个账户的SSH认证:
- 测试个人账户:执行
ssh -T Nethsara,正常反馈应为:Hi Nethsara! You've successfully authenticated, but GitHub does not provide shell access.
- 测试工作账户:执行
ssh -T x-GitHub,正常反馈应为:Hi x! You've successfully authenticated, but GitHub does not provide shell access.
3. 确认仓库远程地址配置
进入克隆的私有仓库,执行 git remote -v,检查输出是否为:
origin git@Nethsara:Nethsara/private-repo.git (fetch) origin git@Nethsara:Nethsara/private-repo.git (push)
如果地址不正确,执行以下命令重置:
git remote set-url origin git@Nethsara:Nethsara/private-repo.git
4. 仓库本地身份配置(可选)
全局user.name仅影响提交记录显示的用户名,与SSH身份认证无关。如果需要区分工作/个人仓库的提交身份,可在个人仓库内单独配置:
git config user.name "Nethsara" git config user.email "你的个人邮箱地址"
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

