无需翻墙,一种访问 GitHub 的简单方法


经常使用 GitHub 的用户可能会遇到浏览器无法访问 GitHub 的情况,如下图所示:

通常情况下,使用代理或 VPN 可以解决这个问题,但我们都知道在国内翻墙是违法的,而且并非所有情况下都有可用的代理或 VPN。特别是在使用 git push(SSH 连接)向 GitHub 提交代码时,有些代理或 VPN 可能会阻断或干扰 SSH 流量,因为它们只支持 HTTP 流量,不支持 SSH 所需的 TCP 连接。这会导致代码无法正常推送,如下图所示。当然,针对这种情况也有其他技术手段,但这里暂不介绍。


今天,介绍一种简单的方法来解决 GitHub 浏览器无法访问及 git push 提交失败的问题。首先,打开终端,使用 ping github.com 命令查看当前访问 GitHub 服务器的 IP 地址,如下图所示:

ping github.com 是用于测试本地与 GitHub 服务器之间网络连接的命令。该命令会向目标服务器发送 ICMP 请求,并等待响应,从而测量网络延迟时间(以毫秒为单位)以及数据包丢失情况。

从上图可以看到,当前 github.com 解析到的服务器 IP 是 20.205.243.166,但网络请求超时。因此,我们可以通过更换可用的 GitHub 服务器节点来解决这个问题。我们可以通过在线工具如站长工具锐安盾查询 github.com 的所有可用服务器 IP,如下图所示:


接下来,使用 ping <IP> 命令逐个测试这些 IP 地址,检查哪些 IP 能够在当前网络环境下正常连接。如下图所示,140.82.116.3 可以正常连接。

因此,我们可以通过修改本地的 hosts 文件(Windows 路径为 C:\Windows\System32\drivers\etc\hosts,Linux/macOS 为 /etc/hosts),在文件末尾添加 140.82.116.3 github.com,手动指定 GitHub 域名与 IP 地址的映射关系。

本地 hosts 文件是一个文本文件,用于将域名映射到特定的 IP 地址。操作系统在访问网络资源时,首先会查找 hosts 文件,以决定域名对应的 IP 地址。这种机制允许用户通过手动修改 hosts 文件来控制特定域名的解析,从而绕过 DNS 服务器的查询。

最后,再次通过 ping github.com 命令确认 GitHub 服务器 IP 已经更改,连接正常。此时,无论是浏览器访问还是 git push 提交代码都可以顺利进行了。