VPS 访问 GitHub 总是卡顿或连接失败?这几个排查步骤帮你搞定
最近在搞一些新项目的部署,遇到一个挺让人头秃的问题:手里的几台 VPS 突然全都罢工了,git clone 速度直接归零,甚至连 GitHub 的主页都 ping 不通。相信不少朋友在折腾服务器或者部署 CI/CD 流水线的时候,都踩过这个坑。
既然是老生常谈的问题,今天咱们就把这个问题揉碎了讲讲,不仅仅是给个“偷懒”的方案,而是从根儿上帮你分析为什么访问不了,以及如何根据不同的网络环境选择最稳妥的解决办法。
第一步:确诊病因,真的是被墙了吗?
很多人一看到连不上 GitHub,第一反应就是“又被墙了”。其实不然,很多时候是因为 DNS 污染导致的域名解析错误,或者仅仅是 IP 段被干扰了。
咱们先在 VPS 上跑个简单的诊断命令:
ping github.com
``
在终端执行ping命令测试GitHub的连通性。
如果你发现 ping 出来的 IP 地址是乱七八糟的,或者根本 ping 不通,但解析出来的 IP 是属于微软/GitHub 段的(比如 20.205.243.166 这种),那么大概率是 DNS 污染或者连接干扰。如果连 IP 都 ping 不通,那就得考虑是运营商层面的线路问题了。
方案一:最硬核的 Hosts 强制解析
既然域名解析可能不靠谱,那我们就绕过 DNS,直接告诉服务器 GitHub 的真实 IP 是多少。这是最经典、也是最不依赖额外工具的方法。
-
获取 GitHub 的最新 IP:你可以借助一些在线工具(比如
ping.cn或者站长工具)查询github.com以及assets-cdn.github.com的当前可用 IP。虽然 IP 可能会变动,但通常一段时间内是稳定的。 -
修改 Hosts 文件:
sudo vim /etc/hosts在文件末尾添加如下内容(请替换为你查询到且当前可用的 IP):
140.82.112.4 github.com 185.199.108.133 assets-cdn.github.com 185.199.109.133 raw.githubusercontent.com保存退出后,再次尝试
curl github.com,如果能看到返回的 HTML 代码,说明解析生效了。
方案二:利用代理中转流量
编辑 /etc/hosts 文件以强制解析域名。
如果你的 VPS 本身就是为了翻越某些网络限制而存在的(例如你也在这台机器上装了 Clash、Xray 等代理软件),那么直接让流量走代理是最简单粗暴的办法。这里以 ProxyChains 为例,这是 Linux 环境下的神器。
-
安装 ProxyChains:
# Debian/Ubuntu sudo apt update && sudo apt install proxychains -y # CentOS/RHEL sudo yum install proxychains -y -
配置代理链: 编辑配置文件
sudo vim /etc/proxychains.conf,拉到文件最底部,把socks4 127.0.0.1 9050修改为你代理软件的监听地址(通常是127.0.0.1和你的代理端口,比如 7890 或 1080)。记得把前面的socks4改成socks5(如果你用的是 v5 协议)。 -
测试使用: 在命令前加上
proxychains4即可:proxychains4 git clone https://github.com/xxx/xxx.git你会看到终端里出现代理的连接日志,代码拉取速度应该就能起飞了。
方案三:针对 SSH 用户的特殊设置
有些朋友习惯用 SSH 协议拉取代码(即 [email protected]:user/repo.git),这种情况 HTTP 代理和 Hosts 文件可能就不灵了。你需要配置 SSH 客户端让它也走代理。
编辑 ~/.ssh/config 文件(没有就新建一个):
Host github.com
HostName github.com
User git
ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p
这里的 -x 127.0.0.1:7890 同样需要替换为你本地代理的地址和端口。配置好后,git pull 或者 git push 也是秒出结果。
细节补充:别忽略了端口问题
有时候你 ping IP 是通的,浏览器也能访问 GitHub 主页,但是 Git 就是不动。这通常是因为 VPS 的防火墙或者运营商对 443 端口(HTTPS)做了限速或阻断。
- 尝试切换端口:虽然 GitHub 主站不支持非标端口,但某些镜像站或者加速服务可能会提供。或者如果你走代理,代理软件可以主动切换 outbound 的端口来规避干扰。
- 检查本机防火墙:确保
ufw或iptables没有把出站流量给拦住了。如果是 Docker 容器里的 VPS,有时候网络模式设为bridge也会导致奇怪的路由问题,试试改成host模式排查一下。
总结
遇到 VPS 访不了 GitHub,别急着换机器,先 DNS 解析一波,不行就走 Hosts 强制指路,如果机器本身就是代理节点,直接上手 ProxyChains 或者配置 SSH ProxyCommand 是最稳妥的。
希望这几个方法能帮大家节省点折腾的时间,把更多的精力花在写代码和玩新花样上。如果你还有其他独门的加速妙招,欢迎在评论区分享!

评论已关闭