恭喜,成功入坑 GitHub 。。。
大家好,我是杰森。GitHub 对大家来说一定不陌生,无论是学习还是交(爬)朋(项)友(目)。但是今天,我好像和它失联了……

当我像往常一样clone项目时,却得到了这样的报错
1 | $ git clone git@github.com:appletdevelop/full-stack.git |
什么都不能阻止打工人搬砖,必须要解决。经过一番排查,终于找到了问题的根源。分享两种解决方案,大家注意避坑。
方案一:配置 DNS
因为错误信息显示 Connection refused ,所以我们需要去看看建立连接时发生了什么,为什么会出错。查看日志,果然发现端倪
1 | $ ssh -vT git@github.com |
日志显示,IPv6 和 IPv4 的 localhost 地址分别为 ::1 和 127.0.0.1,这意味着我们在连接 github 时,其域名将会被解析为 localhost 地址,当然也就无法连接。
打开查询网站,找到 github.com 的 IP 地址

Windows 下,打开本机 hosts 文件
C:\Windows\System32\drivers\etc
添加域名映射,并在 cmd 窗口刷新 DNS 配置
1 | 140.82.112.4 github.com |
重新拉取,成功。
方案二:修改端口号
从上面的报错信息中可以发现,重点在这一句
1 | ssh: connect to host github.com port 22: Connection refused |
ssh 连接 GitHub 的 22 号端口被拒绝。但是 ping 一下 github.com 能通,浏览器访问也没有问题,那有可能是该端口被防火墙蔽掉了。既然 22 端口拒绝访问,我们不妨尝试使用 443 端口进行连接。
使用 vim 指令编辑 ssh 配置文件,添加以下端口信息
1 | $ vim ~/.ssh/config |
测试访问是否成功,通常不出意外的话意外就来了……
1 | $ ssh -T git@github.com |
这与 ssh 的运行机制有关,ssh 会将本机访问过的计算机的 public key 记录在 ~/.ssh/known_hosts 下。当下次访问相同计算机时,若公钥不同则会发出警告,避免受到攻击。这里只需要找到 known_hosts 文件中对应 ip 的 RSA 并删除便可解决。
再次测试,看到以下信息则表示访问成功
1 | $ ssh -T git@github.com |
这样访问 GitHub 时,ssh 就会连接 443 端口,不会报错。

总结
总结下本次踩坑的原因,主要有两点:
- 使用了科学上网小工具;
- 运营商劫持 了
DNS解析;
总之:“网上冲浪也要注意暗礁,低头走路也要抬头看路”,以上就是本期分享啦,希望可以帮到您!