宝塔面板本身不直连 GitHub,但执行拉取代码等操作时会调用系统命令访问 GitHub 相关域名;改 /etc/hosts 可绕过 DNS 和跨境路由问题,需包含 github.com、api.github.com、raw.githubusercontent.com 等至少 6 个子域映射,且 IP 需定期更新。

宝塔面板 本身不直接连接 github.com,但当你在面板中执行「从 GitHub 拉取代码」「安装插件(含 GitHub 仓库源)」「使用一键部署功能」等操作时,底层会调用系统级的 git clone 或 curl/wget 命令访问 GitHub 域名。此时若 DNS 解析慢或出口路由绕行严重,就会表现为「连接超时」「克隆卡住」「提示 Connection refused」——根本原因不是宝塔慢,而是服务器发起的出站请求被卡在域名解析或 TCP 握手环节。
为什么改 /etc/hosts 能起作用
Linux 服务器(包括宝塔所在环境)默认优先查 /etc/hosts,再走 DNS。GitHub 的域名如 github.com、raw.githubusercontent.com 等背后是动态 CDN,官方不公开稳定 IP,但实际生效的 IP 段长期集中在几个网段(如 140.82.112.0/20、199.232.64.0/18)。手动写死最新可用 IP,就跳过了不可靠的 DNS 查询和跨境路由抖动。
哪些域名必须映射(不能只写 github.com)
只加 github.com 的 IP 是不够的,git clone 和宝塔插件安装过程会访问多个子域,漏掉任何一个都会失败:
-
140.82.113.3github.com -
140.82.112.5api.github.com -
199.232.68.133raw.githubusercontent.com -
199.232.68.133user-images.githubusercontent.com -
199.232.69.194github.global.ssl.fastly.net -
185.199.108.154github.githubassets.com
这些 IP 来自 GitHub520 社区维护的实时列表(截至 2026 年 4 月仍有效),比手动查 ipaddress.com 更省事,也更全。
修改后不生效的常见原因
改完 /etc/hosts 文件,宝塔里还是慢?大概率是以下几点之一:
- 没用
sudo权限保存文件(Linux 下/etc/hosts需 root 写入) - 服务器开了代理(如
export http_proxy),导致流量绕行,hosts 失效 - 宝塔后台缓存了旧的 git 配置,重启下
bt restart或整个面板服务 - 某些插件(如「宝塔Git」)内置了独立 DNS 解析逻辑,hosts 对其无效,需单独配置其代理或换用
ghproxy.com类镜像 URL - IP 已过期:GitHub CDN 节点会轮换,建议每月用
ping github.com核对当前响应 IP 是否匹配 hosts 中的值
比手动改 hosts 更可持续的做法
IP 会变,人工维护成本高。推荐在服务器上部署轻量自动同步方案:
- 用
curl -s https://cdn.jsdelivr.net/gh/521xueweihan/GitHub520@main/hosts | sudo tee -a /etc/hosts定期拉取最新 hosts(注意先清空旧的 GitHub 相关行,避免重复) - 配合
cron每周执行一次:0 3 * * 0 curl -s https://cdn.jsdelivr.net/gh/521xueweihan/GitHub520@main/hosts | sudo tee /tmp/github_hosts && sudo sed -i '/github\|fastly\|raw\.github/d' /etc/hosts && sudo cat /tmp/github_hosts | sudo tee -a /etc/hosts - 如果服务器有防火墙(如
ufw),确认没拦截到这些 IP 段的出站 443 端口
真正麻烦的从来不是加几行 hosts,而是忘记它会失效、忘记清理旧条目、或者误以为改了 hosts 就一劳永逸——IP 变动和子域遗漏才是最常被忽略的两个点。


















