SSH协议执行git clone失败,SSH连通正常却无法克隆GitHub仓库
SSH连通正常但Git Clone失败的排查方案
这种情况确实挺让人困惑的——明明ssh -T git@github.com能成功验证身份,可一用SSH协议执行git clone就报错。结合你给出的错误信息(尤其是FATAL: failed to begin relaying via HTTP),我整理了几个大概率的原因和解决办法:
1. Git配置里的代理或SSH命令被异常设置
Git的全局配置可能被添加了影响SSH连接的参数,导致它调用SSH的方式和你直接执行ssh命令时不一样。
- 先检查当前Git的全局配置:
重点看有没有git config --global --listcore.sshCommand(指定了自定义的SSH命令)、http.proxy或https.proxy这类配置。如果存在这些项,很可能是它们导致SSH试图通过HTTP中继失败。 - 若发现异常配置,比如多余的
core.sshCommand,可以用以下命令删除:
同理,删除异常的代理配置后,再尝试git clone。git config --global --unset core.sshCommand
2. SSH配置文件的特殊规则干扰
你的~/.ssh/config文件里可能针对github.com设置了特殊规则(比如ProxyCommand、自定义端口等),这些规则在单独执行ssh测试时正常,但Git调用SSH时出现了兼容性问题。
- 先临时重命名SSH配置文件,排除它的影响:
mv ~/.ssh/config ~/.ssh/config.bak - 然后重新执行
git clone git@github.com:username/repertory.git,如果能成功,说明问题出在原来的SSH配置里,再逐行排查config.bak里的规则。
3. Git版本过低导致的兼容性问题
部分旧版本的Git(比如低于2.20版本)在与新版GitHub SSH服务交互时可能存在bug,导致连接失败。
- 先检查当前Git版本:
git --version - 如果版本较旧,尝试升级到最新稳定版,再测试SSH克隆是否正常。
4. 网络环境的针对性拦截
虽然HTTPS和git协议能正常使用,但某些防火墙或网关可能对Git的SSH流量做了特殊限制,而直接的ssh测试流量未被拦截。
- 可以尝试切换到其他网络环境(比如手机热点)再试,排除本地网络的问题。
- 也可以手动指定SSH端口执行克隆,规避可能的端口拦截:
git clone ssh://git@github.com:22/username/repertory.git
从你报错里的failed to begin relaying via HTTP来看,Git或SSH被配置了HTTP代理是最有可能的原因,优先排查这部分配置应该能解决问题。
内容的提问来源于stack exchange,提问作者yduan
相关产品推荐
相关产品推荐

