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

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

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

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

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

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

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

  2. 写入配置

    1
    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

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

1
ssh -T -p 443 git@ssh.github.com

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

1
2
3
4
5
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 吧。