# SSH 连不上 github 怎么办啊?

Debug日志 1 / 3
4 min read
Table of Contents

我不造啊。突然间就连不上了,变量也忒多了,于是不得不花几个钟上网到处找才解决问题。

代理在干嘛?有没有发力?

首先检查的就是代理程序是不是只进行了HTTP代理。虽然暂时不是很懂代理原理,但是显然不对SSH进行代理配置是不行的,于是我上网寻找如何给SSH进行代理。

忍不住吐槽的是,网上搜出来的东西全是前篇一律:如何在 Mac 上给 ssh 配置代理?如何在 Linux 上给 ssh 配置代理?搜出来的几百篇(夸张)文章都是同一样的图和同一样的命令……甚至同一样的文本(这是真的)。

在我以为很小众的 Windows 用户在这鬼打墙一样的互联网上没有容身之所、要颠沛流离的时候,我找到了这个,跟着博客成功配置了代理。为了防止失联,所以我还是把方法重新整理一下吧。

  1. 首先就像正常配置ssh一样打开配置文件。

    什么?你不会?ssh配置文件应该在 ~/.ssh(git bash),或者 C:\Users\用户名\.ssh(Windows) 目录下,这个目录下有个config的文件(细节没有.xxx扩展名,此外如果没有这个文件你可以创建一个)

  2. 写入配置

    Host github.com
        ProxyCommand "ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:10808 %h %p

    第一行意思是对 github.com 有效,第二行则是:代理的程序(我这里的connect.exe就是 git bash的东东),-S 代表 Sockets5 代理,然后后面是代理的地址和端口,最后 %h %p照抄就行。

  3. 保存,然后 ssh -T git@github.com试试,如果正常连接上就说明没问题,你可以收工了。

唉,端口22

如果还有问题——像我一样的kex_exchange_identification: Connection closed by remote host,那你有福了。

我直接放参考资料吧,最后是我自己的从参考资料里面找到有效的解法:

kex_exchange_identification: Connection closed by remote host · community · Discussion #55269

Using SSH over the HTTPS port - GitHub Docs

你可以试试这条命令是否能连上

Terminal window
ssh -T -p 443 git@ssh.github.com

如果能连上那应该用我同样的方法是可以的。简单说就是把 22 端口改成 443 端口,直接改 ssh的 config 就行。

Host github.com
    ProxyCommand "ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:10808 %h %p
Hostname ssh.github.com
Port 443
User git

具体参数意思懒得写了(猜也能猜出来),不懂就问 ai 吧。

Next: git clone 报错什么 RPC failed 啊怎么办?
My avatar

感谢你阅读我的文章! 你可以自由地检查我的其他文章或通过页脚的社交链接联系我。


Debug日志 Series

Comments