叙述
电脑C盘爆满,不知如何清理C盘,就此决定重装系统。重装系统完以后,我下载了很多相关开发的环境,此时我迫不得已打开代理加速,不然安装都不了。有镜像站,但是我本人偏好是,不是官网,心里不踏实。
环境装好后,信心满满开始配置Git。生成SSH密钥、公钥上传GitHub一气呵成,直到输入 ssh -T ``git@github.com
—— kex_exchange_identification: Connection closed by remote host 短短一行报错,让我在接下来的48小时里怀疑人生。翻遍全网博客,清一色的“检查公钥”“重启SSH服务”毫无新意,甚至有人建议“换根网线试试”…
我在这里不叙述,我解决问题的过程,解决此问题也很简单,但是网上的博客都千篇一律,都是抄袭别人的,发布到网上,没有一个能够解决此问题的,而且也是废话很多!
关键解法:SSH 协议必须通过 HTTP代理 连接!而90%的教程都忽略了这一点
解决方案
Step 1:获取核武器——ncat.exe
-
访问 nmap官网 下载安装包
-
安装时务必勾选ncat组件(默认不选!巨坑!)
-
记录安装路径(通常为
C:\Program Files (x86)\Nmap\ncat.exe)
Step 2: SSH 配置的生死代码
你打开文件夹没有config文件的话,在找到ssh密钥的文件夹,创建config文件,没有后缀哦~
配置如下,
Host github.com
Hostname ssh.github.com
ProxyCommand "C:\Program Files (x86)\Nmap\ncat.exe" --proxy-type http --proxy 127.0.0.1:12334 %h %p
IdentityFile ~/.ssh/id_rsa
Port 443
ServerAliveInterval 20
User git
参数解析表
| 参数 | 作用 | 避坑指南 |
|---|---|---|
| --proxy-type http | 声明代理类型为HTTP | 用socks5必挂 |
| 127.0.0.1:12334 | 本地代理端口(下文教你查) | 填错直接凉凉 |
| Port 443 | 绕过公司/校园防火墙的神器 | 改22端口立刻被阻断 |
Step 3:查清你的代理 端口
- 打开代理软件(Shadowsocks/V2Ray等)
- 找到 HTTP监听 端口(如下图中的1080)
- 替换配置中的
12334为你的实际端口
最后, 你可以使用 ssh -T git@github.com 命令,测试git的连通性~
成功画面:
Hi YourUsername! You've successfully authenticated...
失败排查清单: ✅ 检查ncat路径是否有空格(建议路径全程无中文和空格) ✅ 代理软件是否开启全局模式(PAC模式可能漏代理) ✅ 重启Git Bash/Cmd(配置缓存可能导致翻车)
致后来者
如果你也曾在深夜对着SSH报错抓狂,不妨在博客评论区留下你的故事——毕竟,每一个程序员的成长史,都是与报错信息搏斗的血泪史。