解决无法拉取Github项目

GitHub 突然无法拉取和推送

今天开心的逛着 GitHub,看到一个项目想要拉取下来看看,但是把拉取命令打好后,一回车,没有像往常一样拉取到镜像,反而报了以下的错

1
2
ssh: connect to host github.com port 22: Connection refused
fatal: Could not read from remote repository.

我连接不上 GitHub 的22端口了?前一天还能拉取项目,咋今天不行?
然后我尝试 ping 了一下 github.com

1
2
3
4
5
PING github.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.017 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.028 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.028 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms

emmm… 众所周知,127.0.0.1是一个本地回环地址,DNS 是将域名解析到公网 ip 上的,所以,问题只出在了一个地方—DNS 污染

使用 HTTPS

有可能是被防火墙给拦截了,而 GitHub 官方也给出了解决方法
https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port
使用 SSH over the HTTPS port

可以尝试如下命令连接 GitHub,测试是否可以使用 SSH over the HTTPS port

1
ssh -T -p 443 git@ssh.github.com

如果提示如下信息,则说明可以使用

1
Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.

那么可以使用如下命令来拉取项目

1
git clone ssh://git@ssh.github.com:443/YOUR-USERNAME/YOUR-REPOSITORY.git

设置所有拉取都使用 HTTPS

如果想要让所有的与 git@ssh.github.com 的连接都使用 443 端口,也就是 HTTPS,那么就需要修改 ssh 的配置文件
修改 ~/.ssh/config 文件,如果没有,则创建一个
然后加入如下配置

1
2
3
4
Host github.com
Hostname ssh.github.com
Port 443
User git

配置完成后,可以通过如下命令测试是否成功

1
ssh -T git@github.com

成功会输出如下语句

1
Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.

今天开心的摸鱼,摸到了一天大鱼,想要拿来玩一玩,但是却被这个问题给挡住了 (´゚д゚`)
为了解决这个问题,有时一番好找,总算是解决了问题,好端端的 GitHub 为什么会被解析到本地环回地址呢 (눈‸눈)
问题解决了就好,毕竟博客也是用的 GitHub Pages 嘛,也是用的 Git 来更新,这一问题解决了,也算是解决了一个博客可能不见的隐患 (ノ>ω<)ノ