Git SSH 无法连接 GitHub 的排查与代理配置(Clash 环境)
在开发过程中,使用 Git SSH 连接 GitHub 是常见的操作,最近在本地开发中就遇到了类似的问题,执行 git pull
报错:
1 | ssh: connect to host ssh.github.com port 443: Connection refused |
排查方向(客户端配置、SSH 使用方式、本地网络、代理等维度)
一、客户端配置检查
是使用 SSH 协议还是 HTTPS?
通过
git remote -v
查看远程地址是否为git@github.com:xxx
(SSH)本地是否存在 SSH Key?GitHub 是否配置了公钥?
检查
~/.ssh/id_rsa.pub
,并确认 GitHub 设置中添加了对应的 SSH 公钥SSH 配置文件
~/.ssh/config
是否有误?
二、GitHub SSH 服务是否可用
📡 使用 telnet 或 nc 测试是否能访问 ssh.github.com:443
1 | nc -vz ssh.github.com 443 |
如果显示连接失败,有可能是被防火墙拦截或网络限制。
三、本地网络或代理问题
Clash 是否已开启?
Clash 是本地代理工具,通常运行在 127.0.0.1:7890(HTTP)或 7897(SOCKS5),可以代理所有出站流量。
若未开启或未启用系统代理,则 Git SSH 不会自动走代理。
四、配置 SSH 使用 Clash 的 SOCKS5 代理
为了解决 SSH 连接无法通过网络直连 GitHub 的问题,我们可以使用 ProxyCommand
方式,配置 Git 的 SSH 使用 Clash 的代理。
✅ 推荐使用 connect.exe 作为代理工具
- Git 自带:
- 修改
~/.ssh/config
文件如下:
1 | Host github.com |
这里指定了通过 Clash 的本地 SOCKS5 代理(127.0.0.1:7897)连接 GitHub 的 SSH 服务器。
五、验证连接是否成功
1 | ssh -T git@github.com |
如果输出:
1 | Hi your-username! You've successfully authenticated... |
总结与建议
- 如果你用的是 SSH 协议(
git@github.com
),就需要配置 SSH 的ProxyCommand
才能走代理。 - 推荐使用
connect.exe
工具,兼容性更好。
如果你也遇到 Git SSH 无法连接的问题,不妨参考以上方式配置代理,大概率就能解决了。
原文链接: https://alexhuihui.github.io/article/20250421.html
版权声明: 转载请注明出处.