赞
踩
最近,我在Windows系统的电脑上,尝试使用Git克隆项目时,不断遇到连接超时的错误。无论如何尝试调整环境变量或配置代理,都未能解决问题。因此,开始了一系列的问题排查。
首先,我在Git Bash终端使用了ssh -T git@github.com
命令来测试与GitHub的SSH连接。结果显示,22端口的连接超时:
ssh: connect to host github.com port 22: Connection timed out
我开始思考,是否是端口问题。在搜索解决方案的过程中,我在Stack Overflow上找到了一些线索。有建议说可以尝试修改~/.ssh/config
文件,以使用不同的端口连接GitHub。于是,我按照下面的配置进行了修改:
Host github.com
Hostname ssh.github.com
Port 443
这个配置的目的是让GitHub通过443端口进行通信。有评论提到22端口可能被其他服务占用,这让我觉得有些道理。我使用vim ~/.ssh/config
编辑了配置文件,但结果依然是:
ssh: connect to host github.com port 443: Connection timed out
当我在苦苦思索为什么ping github.com
也会超时时,我突然想起了一个经典的面试题:“在浏览器中输入URL会发生什么?”这让我意识到问题可能出在DNS解析上。
我学到了一个在终端中查看DNS服务器域名解析的命令:
// nslookup是域名解析工具
nslookup baidu.com
首先我对baidu.com
执行了解析,结果如下:
Server: 119.6.6.6
Address: 119.6.6.6#53
Non-authoritative answer:
Name: baidu.com
Address: 110.242.68.66
Name: baidu.com
Address: 39.156.66.10
然后我对github.com
进行了同样的操作,结果显然不正常:
Name: github.com
Address: 127.0.0.1
返回了127.0.0.1,这显然是错误的,因为这是本地回环地址。问题似乎就出在这里。
许多人可能都修改过本地的DNS域名映射文件,这也是上述面试题中的一个知识点。于是,我打开了资源管理器,输入以下路径进行修改:
C:\Windows\System32\drivers\etc\hosts
MacOS用户可以使用sudo vi /etc/hosts
命令在终端中进行修改。
在文件末尾添加以下行,其中140.82.113.4
是GitHub的服务器地址。添加后,就可以通过本地的域名映射来访问GitHub了:
140.82.113.4 github.com
保存修改后,我终于可以不用代理,愉快地访问GitHub,并顺利完成了克隆项目的操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。