同一设备使用两个GitHub账号执行git推送时报无法读取远程仓库错误
多GitHub账号SSH配置报错排查
核心报错本质
Could not resolve hostname github-kumaramit114920的报错,是SSH客户端未读取到你自定义的github-kumaramit114920主机别名配置,将该字符串直接作为公网域名发起DNS解析,自然无法获取对应IP导致失败,和仓库存在性、访问权限无直接关联。
分步解决操作
- 校验SSH配置的存放路径与权限
- 配置文件必须放在对应系统的SSH默认目录下:Linux/macOS路径为
~/.ssh/config,Windows路径为C:\Users\你的系统用户名\.ssh\config,路径错误会导致SSH完全忽略该配置文件。 - Linux/macOS环境下需给配置文件设置严格权限,执行命令:
chmod 600 ~/.ssh/config,权限过松会被SSH判定为不安全直接跳过读取。 - 检查配置文件的语法格式,正确格式参考如下,注意字段后不要加多余标点、不要混用中文符号:
# 账号1:对应kumaramit114920的GitHub身份 Host github-kumaramit114920 HostName github.com User git IdentityFile ~/.ssh/对应账号的私钥文件路径 IdentitiesOnly yes # 账号2:第二个GitHub账号的配置 Host 自定义第二个账号的别名 HostName github.com User git IdentityFile ~/.ssh/第二个账号的私钥文件路径 IdentitiesOnly yes
- 配置文件必须放在对应系统的SSH默认目录下:Linux/macOS路径为
- 校验本地仓库的远程地址匹配性
- 在本地仓库根目录执行
git remote -v,查看当前绑定的远程仓库地址,正确格式应为git@github-kumaramit114920:你的GitHub用户名/仓库名.git - 如果地址里的主机名和SSH配置里定义的
Host名不完全一致,执行命令修正:git remote set-url origin git@github-kumaramit114920:kumaramit114920/你的仓库名.git
- 在本地仓库根目录执行
- 提前验证SSH连通性
- 修正配置后不要直接执行推送,先执行连通性验证命令:
ssh -T git@github-kumaramit114920 - 看到返回
Hi kumaramit114920! You've successfully authenticated, but GitHub does not provide shell access的提示,就说明配置已生效,再执行git push origin master即可正常推送。 - 如果验证阶段仍报域名解析错误,可执行
ssh -v git@github-kumaramit114920查看详细连接日志,定位具体是配置读取失败、路径错误还是其他问题。
- 修正配置后不要直接执行推送,先执行连通性验证命令:
高频踩坑提醒
- 多账号配置必须添加
IdentitiesOnly yes字段,否则SSH会默认读取第一个找到的私钥发起认证,即使主机名解析正常也会出现403权限错误。 - Windows系统需注意,不要将配置文件存为带
.txt后缀的config.txt,必须是无后缀的纯config文件。 - Host别名仅为本地配置匹配标记,不能添加多余的域名、端口或路径字符。
内容的提问来源于stack exchange,提问作者Amit Kumar
相关产品推荐
相关产品推荐

