ssh: connect to host github.com port 22: Connection timed out,git clone github文件时失败

文章目录

  • 原因(不想看直接跳过):
  • 解决方案(在一个文件中添加一行字符串即可):
  • 其他方法
    • 其他方法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输入以下行测试是否成功:

ssh [email protected]

结果如下图所示(由于自己指定了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