MacOS下GitHub多SSH密钥配置异常,个人密钥匹配企业账户求助
解决MacOS下GitHub多SSH密钥账户身份匹配错误问题
问题现象
配置了两个GitHub账户(个人/企业)及对应独立SSH密钥,SSH配置文件如下:
# * GitHub CKO SSH Key Host github-enterprise HostName github.com AddKeysToAgent yes UseKeychain yes User git IdentityFile ~/.ssh/id_ed25519_github # * GitHub Personal SSH Key Host github-personal HostName github.com AddKeysToAgent yes UseKeychain yes User git IdentityFile ~/.ssh/gh_mervinhemaraju_ed25519
此前正常使用近一个月,近期推送个人仓库代码时触发权限拒绝,测试SSH连接发现:
ssh -T git@github-personal # 返回:Hi mervin-hemaraju-enterprise! You've successfully authenticated, but GitHub does not provide shell access. ssh -T git@github-enterprise # 返回:Hi mervin-hemaraju-cko! You've successfully authenticated, but GitHub does not provide shell access.
个人Host(github-personal)错误匹配到企业账户身份。
解决步骤
1. 清空SSH Agent缓存并重新加载密钥
MacOS的SSH Agent可能缓存了旧的密钥优先级,导致错误匹配:
# 清空所有缓存的SSH密钥 ssh-add -D # 分别添加两个账户的密钥 ssh-add ~/.ssh/id_ed25519_github ssh-add ~/.ssh/gh_mervinhemaraju_ed25519
2. 修正SSH配置的优先级
确保全局配置不会覆盖Host专属设置,在~/.ssh/config最顶部添加全局规则,再保留原有Host配置:
# 全局配置 Host * AddKeysToAgent yes UseKeychain yes # * GitHub CKO SSH Key Host github-enterprise HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github # * GitHub Personal SSH Key Host github-personal HostName github.com User git IdentityFile ~/.ssh/gh_mervinhemaraju_ed25519
3. 检查并修正密钥文件权限
MacOS对SSH密钥权限要求严格,必须确保密钥文件和目录权限正确:
# 设置.ssh目录权限为700 chmod 700 ~/.ssh # 设置两个密钥文件权限为600 chmod 600 ~/.ssh/id_ed25519_github chmod 600 ~/.ssh/gh_mervinhemaraju_ed25519
4. 验证个人仓库的远程地址配置
确保个人仓库的远程地址使用了github-personal Host,而非直接指向github.com:
# 查看当前远程地址 git remote -v # 如果不是正确的Host,修改远程地址 git remote set-url origin git@github-personal:mervinhemaraju/your-personal-repo.git
5. 重新测试SSH连接
执行以下命令验证身份匹配是否恢复正常:
ssh -T git@github-personal # 应返回:Hi mervinhemaraju! You've successfully authenticated, but GitHub does not provide shell access. ssh -T git@github-enterprise # 应返回:Hi mervin-hemaraju-cko! You've successfully authenticated, but GitHub does not provide shell access.
内容的提问来源于stack exchange,提问作者Mervin Hemaraju
相关产品推荐
相关产品推荐

