恭喜,成功入坑 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
解析;
总之:“网上冲浪也要注意暗礁,低头走路也要抬头看路”,以上就是本期分享啦,希望可以帮到您!