Git Bash配置GitHub多SSH身份后Git推送身份错误问题咨询
多GitHub账号SSH自动匹配身份配置修正方案
核心问题
当前配置不生效有三个直接原因:
- SSH配置文件路径错误,SSH默认读取的配置路径是
~/.ssh/config,放在~/ssh/config下的配置不会被自动加载 Host字段定义的别名不能包含:字符,且SSH匹配Host规则时,只会识别连接地址中@之后、://之前的主机段,你写的github.com:my_first_github_account格式永远不会被命中- 缺少
IdentitiesOnly yes配置,SSH默认会优先尝试本地默认密钥、ssh-agent已加载的所有密钥,不会严格使用你指定的IdentityFile,很容易出现身份错配 - 之前手动执行的ssh测试命令实际连接的是主机
github.com,冒号后的内容被识别为远程路径参数,根本没有匹配到自定义Host规则,返回鉴权成功只是刚好本地某个默认密钥有GitHub访问权限,不是配置的专属密钥生效。
修正步骤
- 先把配置文件移动到正确路径,重写配置内容:
# 第一个GitHub账号 Host github-user1 HostName github.com User git IdentityFile ~/.ssh/id_ed25519_user1 IdentitiesOnly yes # 第二个GitHub账号 Host github-user2 HostName github.com User git IdentityFile ~/.ssh/id_ed25519_user2 IdentitiesOnly yes
配置写完后执行chmod 600 ~/.ssh/config修正文件权限,权限过宽会被SSH拒绝加载。
对应仓库修改远程地址,将原地址中
@后的github.com替换为你定义的Host别名。比如第一个账号下的仓库执行:git remote set-url origin git@github-user1:my_first_github_account/my-repo.git
第二个账号下的仓库同理,替换为git@github-user2:账号名/仓库名.git即可。验证配置
执行ssh -T github-user1,返回第一个账号的欢迎提示即为配置正确;执行ssh -T github-user2返回第二个账号的欢迎提示就可以正常使用git push/pull操作,会自动匹配对应密钥。
内容的提问来源于stack exchange,提问作者adapting
相关产品推荐
相关产品推荐

