MacOS下Git正确配置SSH config仍多项目密钥匹配错误
故障原因
MacOS 12.4 自带的 OpenSSH 存在两个配置层面的坑会导致串号、重启失效问题:
- 单Host下配置的
UseKeyChain参数拼写错误,正确参数名的keychain首字母k小写、c小写,拼写错误会导致配置完全不生效 - 缺少全局Host规则时,SSH不会主动从钥匙串拉取对应Host的专属密钥,只会按顺序遍历代理中已加载的密钥做认证,很容易匹配到错误的账号密钥,且系统重启后代理清空就需要手动重新加载密钥。
修复操作
- 打开终端编辑SSH配置文件:
vim ~/.ssh/config - 在配置文件最顶部(所有单独Host配置之前)添加全局规则,同时修正原有配置的拼写错误,完整配置参考如下:
# 全局通用配置 Host * AddKeysToAgent yes UseKeychain yes IdentitiesOnly yes # GitHub progOne 账号 Host progOne HostName github.com IdentityFile ~/.ssh/progOne_id_ed25519 # GitHub progTwo 账号 Host progTwo HostName github.com IdentityFile ~/.ssh/progTwo_id_ed25519 # GitHub progThree 账号 Host progThree HostName github.com IdentityFile ~/.ssh/progThree_id_ed25519
原有单Host配置里重复写的AddKeysToAgent、UseKeychain、IdentitiesOnly规则可以删掉,全局配置已经对所有Host生效,重复写不影响功能但冗余
3. 清空SSH代理当前缓存的所有密钥,避免旧的错误加载记录干扰认证:ssh-add -D
4. 重新将三组密钥写入SSH代理和系统钥匙串:
ssh-add --apple-use-keychain ~/.ssh/progOne_id_ed25519 ssh-add --apple-use-keychain ~/.ssh/progTwo_id_ed25519 ssh-add --apple-use-keychain ~/.ssh/progThree_id_ed25519
- 分别测试三个Host别名的SSH连接:
ssh -T git@progOne ssh -T git@progTwo ssh -T git@progThree
测试正常会分别返回三个对应GitHub账号的认证成功提示,不会出现串号,设备重启后也不需要手动重新加载密钥。
补充配置(避免提交串号)
每个本地项目仓库下不要用全局git用户配置,进入对应项目目录后单独配置本仓库的提交身份:
git config user.name "对应GitHub账号的用户名" git config user.email "对应GitHub账号绑定的提交邮箱"
内容的提问来源于stack exchange,提问作者Monarch
相关产品推荐
相关产品推荐

