文章目录
- 原因(不想看直接跳过):
- 解决方案(在一个文件中添加一行字符串即可):
- 其他方法
-
- 其他方法1
- 其他方法2
原因(不想看直接跳过):
DNS被污染了
gitbash中输入以下行:
ssh -vT [email protected]
-v:详细模式
-T:测试连接
[email protected]:git,Github的默认用户名;github.com,Github的主机名
得到下图:
可以看到倒数第三行,连接github.com时显示的IP地址是[20.205.243.166],我们复制这个IP地址去浏览器看看,如下图(地址栏中IP地址冒号后是端口号):
很明显是受到了DNS(Domain Name System)污染,其作用是防火墙让一般用户由于得到虚假目标主机IP而不能与其通信的方法。 其工作方式是:对经过的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务,给查询者返回虚假结果。
解决方案(在一个文件中添加一行字符串即可):
小技巧:在gitbash里,复制是Ctrl+Insert,粘贴是Shift+Insert。(Insert键一般在Del键左边)
在文件中找到并打开HOSTS文件。在Windows系统中,HOSTS文件通常位于:
C:WindowsSystem32driversetcHOSTS
右键该文件并用文本编辑器(例如记事本、Notepad++等)或命令提示符(cmd.exe)打开该文件。
在文件末尾输入以下行:
140.82.113.4 github.com
保存并关闭文件。(到这里一般已经解决了,可以不用看了)
打开gitbash输入以下行测试是否成功:
结果如下图所示(由于自己指定了github的IP地址所以系统无法验证GitHub服务器的公钥而警告,但是没关系,已经可以用了):
输入如下代码进行克隆(替换成你自己的项目git链接):
git clone [email protected]:warma13/hello-World.git
结果如下图,此时会需要输入yes,否则会失败:
第二次克隆则不再需要输入yes。
成功克隆项目,解决问题。
其他方法
其他方法1
有人说可以修改~/.ssh/config(没有config就自己创建),在文件中添加以下行:
Port 443
443是端口,可以尝试修改为允许通过的端口
其他方法2
直接把git链接换成https链接,如下(替换成你自己的项目https链接):
git clone https://github.com/warma13/hello-World.git