0%

GitHub总是连接超时的问题

解决 GitHub 连接超时问题的完整方案

GitHub 连接超时是开发中常见的网络问题,通常由 DNS 解析异常、网络线路限制或 IP 封锁导致。除了更新 Hosts 文件,还有多种针对性解决方案,以下是详细步骤:

更新 Hosts 文件(核心方案)

通过手动绑定 GitHub 域名与 IP,绕过 DNS 解析问题,直接访问目标服务器。

1. 获取最新 IP 地址

查询以下关键域名的实时 IP(推荐多个来源交叉验证):

  • 必查域名
    • github.com(GitHub 主域名)
    • github.global.ssl.fastly.net(GitHub 静态资源 CDN)
    • assets-cdn.github.com(GitHub 资产 CDN)
  • 查询工具

2. 修改 Hosts 文件

(1)Windows 系统
  • 路径:C:\Windows\System32\drivers\etc\hosts

  • 操作步骤:

    1. 右键记事本 →「以管理员身份运行」。

    2. 打开上述路径的 hosts 文件。

    3. 在末尾添加 IP 与域名映射(示例):

      1
      2
      3
      4
      5
      6
      140.82.113.4    github.com
      199.232.69.194 github.global.ssl.fastly.net
      185.199.108.153 assets-cdn.github.com
      185.199.109.153 assets-cdn.github.com
      185.199.110.153 assets-cdn.github.com
      185.199.111.153 assets-cdn.github.com
    4. 保存文件(若提示权限不足,需确认已以管理员身份运行)。

(2)Mac/Linux 系统
  • 路径:/etc/hosts

  • 操作步骤:

    1. 打开终端,执行命令(需要管理员权限):

      1
      sudo vim /etc/hosts
    2. i 进入编辑模式,添加上述 IP 映射。

    3. Esc 退出编辑,输入 :wq 保存退出。

3. 刷新 DNS 缓存

修改 Hosts 后需刷新 DNS 使配置生效:

  • Windows:在 cmd 中执行

    1
    ipconfig /flushdns
  • Mac:在终端执行

    1
    sudo killall -HUP mDNSResponder
  • Linux:在终端执行

1
sudo systemctl restart network-manager  # 或根据发行版使用对应命令

其他实用解决方案

1. 检查网络代理设置

若使用代理工具(如 Clash、V2Ray),需确保:

  • 代理已正常连接(测试访问 Google 验证)。

  • GitHub 相关域名未被代理规则排除(在代理软件中添加 github.com 到「代理列表」)。

  • 终端 / 命令行已走代理(部分工具默认仅代理浏览器,需手动配置终端代理):

    1
    2
    3
    # 临时配置终端代理(示例,端口需与代理软件一致)
    export http_proxy=http://127.0.0.1:7890
    export https_proxy=http://127.0.0.1:7890

2. 使用 HTTPS 替代 SSH(规避 SSH 端口封锁)

若 SSH 连接(git@github.com)持续超时,可改用 HTTPS 协议操作仓库:

  • 克隆仓库时使用 HTTPS 地址:

    1
    git clone https://github.com/username/repo.git  # 替代 git@github.com:username/repo.git
  • 已克隆的仓库可修改远程地址:

    1
    git remote set-url origin https://github.com/username/repo.git

3. 更换网络环境

  • 尝试连接手机热点(部分企业 / 校园网可能封锁 GitHub IP)。
  • 使用 IPv6 网络(部分地区 IPv6 对 GitHub 访问更顺畅,可在路由器中开启 IPv6)。

4. 测试网络连通性

通过 pingtelnet 排查基础网络问题:

1
2
3
4
5
6
7
8
# 测试 github.com 连通性
ping github.com

# 测试 443 端口(HTTPS)是否开放
telnet github.com 443

# 测试 22 端口(SSH)是否开放
telnet github.com 22
  • ping 失败但 Hosts 已配置,可能 IP 已失效,需重新查询最新 IP。
  • 若端口不通,可能被防火墙或网络运营商封锁,建议改用 HTTPS 或代理。

长期优化建议

  1. 定期更新 Hosts:GitHub IP 可能变动,建议每月检查一次 IP 有效性。

  2. 使用 DNS 服务器:将系统 DNS 改为公共 DNS(如 114.114.114.114 或 8.8.8.8),减少 DNS 污染影响。

  3. 配置 SSH 超时参数:在~/.ssh/config中添加超时设置,避免长时间等待:

    1
    2
    3
    Host github.com
    ServerAliveInterval 30 # 每 30 秒发送一次心跳包
    ServerAliveCountMax 3 # 连续 3 次失败则断开

欢迎关注我的其它发布渠道