这几天使用 git 命令从 GitHub 上克隆代码库或者推送代码时,可能会遇到连接失败的问题,错误信息通常是

ssh: connect to host gitclone.com port 22: Connection timed out。

然后我细细查了下,出现的原因主要有两个:

1. GitHub.com 域名被运营商指向了本地;

2. 使用了一些 GitHub 加速类工具,他们将 GitHub.com 指向了自己,也就是本地地址 127.0.0.1。

这2种情况都会导致连接中断,就会出现该提示。

其实解决方法很简单,目前有2种方法:

因为本地各种加速工具会强行修改github.com和www.github.com的指向,所以只能另开个地址来解决。

以下例子用 github.com/afyi/lhqw 举例:

使用以下2种方法时,请手动关闭git的ssh证书验证,

  • 网上推荐方法 全局关闭 [不推荐]

理由:不安全,建议只给当前的项目单独加入,因为你可能会用到不同的git平台

git config --global http.sslverify "false"
  • 只给当前项目关闭 [推荐]
git config http.sslverify "false"

1. 本地方法,修改hosts文件,加下面1条:

20.205.243.166  github

然后,原本用ssh clone的地址就会由变成这样

原本: git@github.com:afyi/lhqw
改后: git@github:afyi/lhqw

2. 远程方法(仅限有自己的域名的情况):

给自己的域名添加一个2级,然后cname到github.com
比如我的 del.pub 可以做如下解析

域名 解析方法
github CNAME github.com.

这样,每次建立项目的时候,就可以用以下地址

原本: git@github.com:afyi/lhqw
改后: git@github.del.pub:afyi/lhqw

就可以正常使用了。