解决国内GitHub无法连接问题

GitHub 算是程序员经常访问的一个网站了,好多优秀的开源作品都会发布在这里,因此不少优秀的个人开发者都会将开源作品或者代码挂在GitHub上,但是国内访问 GitHub 貌似不是很通畅,时不时访问速度就非常慢,部分地区经常直接无法访问。在国内会被解析到新加坡节点的 20.205.243.166 ,这个 IP 在全国范围内被空路由了,其他 GitHub 的 IP 暂时没事,也可能只是策略还没分发完毕

只需要我们手动修改设备的 hosts 就可以很大程度上解决,或者使用第三方工具,如反代镜像加速或者网络代理

修改 hosts 的前提就是需要获取到所在区域访问该网站最佳的 IP 节点,我们可以直接用网站测速工具进行获取

https://ping.chinaz.com/github.com

一片红,喜气洋洋,好家伙!第一次尝试宣告失败!此文终结…

换种方式,我们可以找现成整理好的 GitHub hosts 源就可以了,其实官方就提供了 meta API 获取 IP 地址列表

https://api.github.com/meta

仔细看了看还不是现成的,还需要个人二次整理,懒的弄,直接 pass

有没有现场开箱即用的方案,肯定是有的,借助于热心民间开发者的整理,找到了两个项目,不过依然是放在了 GitHub 中,直接陷入死循环了,本来就访问不了,还将解决方案放到访问不了的网页中

好在我们可以通过第三方的反向代理镜像服务来解决,注意这类第三方因为都是公益免费的存在服务不稳定问题,随时都可能会被薅秃了关闭服务

大家可以使用bing搜索关键词GitHub 加速镜像查找

GitHub Proxy 加速代理

https://www.gitmirror.com/
https://moeyy.cn/gh-proxy/
https://mirror.ghproxy.com/

注意,以上加速代理为临时解决方案,且有诸多不便

修改 hosts 文件

最新hosts:
https://github.com/maxiaof/github-hosts

hosts 文件在不同系统位置不一,详情如下:

  • Windows 系统:C:\Windows\System32\drivers\etc\hosts
  • Mac(苹果电脑)系统:/etc/hosts
  • Linux 系统:/etc/hosts

修改方法,复制内容粘贴到到hosts文件里

  1. Windows 使用记事本。
  2. Linux、Mac 使用 Root 权限:sudo vi /etc/hosts

激活生效

大部分情况下是直接生效,如未生效可尝试下面的办法,刷新 DNS:

  1. Windows:在 CMD 窗口输入:ipconfig /flushdns
  2. Mac 命令:sudo killall -HUP mDNSResponder
  3. Linux 命令:sudo nscd restart

Tips: 如以上刷新不好使,请重启尝试

SwitchHosts自动更新hosts文件

SwitchHosts 是一个管理、切换多个 hosts 方案的工具,还是一个免费开源软件。只要将订阅的 hosts 源添加上,后续就不需要手动更新 hosts 文件了

Hosts 管理工具

https://switchhosts.vercel.app/zh

工具安装好后添加订阅源就可以自动更新,避免日后 GitHub 部分节点失效导致需要手动更新 hosts

订阅源

https://github.com/ineo6/hosts
订阅源1: https://jsd.cdn.zzko.cn/gh/ineo6/hosts/master/next-hosts

https://github.com/maxiaof/github-hosts
订阅源2: https://jsd.cdn.zzko.cn/gh/maxiaof/github-hosts/hosts

其它工具

https://hosts.gitcdn.top/

GitHub Push问题

以下就是程序员专区了,平时写好的代码片段托管至GitHub时,使用Git提交代码经常会出各种问题

遇到往 GitHub push 的时候始终报错:ssh: connect to host github.com port 22: Connection timed out

而且仅限于 ssh 类型的仓库,即git@github.com类型的地址。 如果仓库是 https 类型的,即https://github.com并未受影响

该错误通常是因为使用TAP设备,如Clash TAP Device和Clash TUN Mode,默认22端口被TAP设备占用而导致SSH无法正常工作

解决方案

找到~/.ssh/config文件,没有的话新建一个
该文件在Windows操作系统的路径一般为C:\Users\{Username}\.ssh\config

1
2
3
4
5
6
vim ~/.ssh/config

# add
Host github.com
Hostname ssh.github.com
Port 443

Refer: https://stackoverflow.com/a/52817036/4156036 and https://hellodk.cn/post/975

END:

自备一个好用的网络代理工具,确实要少许多折腾

拓展一下,GitHub上 的一些静态资源可以使用 jsDelivr 来加速访问,但是 jsDelivr 在国内也已经被滥用至无法使用了,不过还有一些基于 jsDelivr 的反代加速服务,篇幅有限后面再说……