[2022.03] GitHub 加速终极教程 - Allen Hua 的网络博客

TL;DR

这篇教程旨在解决 GitHub 访问和 Git 操作速度慢的问题。文章强调拥有良好的网络环境是前提,并详细介绍了如何配置 HTTP 和 SSH 代理以加速 GitHub 访问。其中,推荐使用 socks5h 协议进行 HTTP 代理,并提供了 Linux/macOS 和 Windows 平台下 SSH 代理的配置方法,同时解答了常见问题。此外,文章还建议使用浏览器代理扩展加速网页访问。配置成功后,Git 操作速度将明显提升。

Summary

好的,这是对您提供的 GitHub 加速教程的详细总结:

  1. 文章主题:解决 GitHub 访问慢(HTTPS)和 Git Clone 慢(HTTPS 或 SSH)的问题。强调良好的网络环境(木弟子)是前提。

  2. 前提说明:良好的网络环境是GitHub体验的基础。

  3. SSH与HTTP代理的重要性
    • 许多开发者使用 SSH Key 进行 Git 操作。
    • 配置 SSH 代理与 HTTP 代理同等重要。
    • 未配置 SSH 代理时,直接 SSH Clone 速度可能很慢。
  4. HTTP代理配置
    • 使用 git config 命令设置全局 HTTP 代理。
    • 推荐使用 socks5h 协议,强制 DNS 解析也在代理服务器上进行。
      • socks5h 的 “h” 代表 host,包含域名解析。
    • 无需额外配置 https.proxy,因为服务器会自动将 HTTP 重定向到 HTTPS。
  5. SOCKS5协议的优势
    • SOCKS5 包含 HTTP(S),覆盖范围更广。
    • SOCKS5 工作在 OSI 模型的会话层(第五层),比 HTTP(S) 代理(应用层,第七层)更底层。
  6. 针对性代理配置
    • 可以只为 GitHub 配置 HTTP 代理,避免影响内网服务。
    • 通过修改 ~/.gitconfig 文件实现。
  7. SSH代理配置

    • Linux & macOS

      • 修改用户家目录下的 .ssh/config 文件。
      • 使用 nc (netcat) 命令作为代理。
      • nc 程序通常位于 /usr/bin/nc

      • .ssh/config 示例配置:
      Host github.com
       Hostname ssh.github.com
       IdentityFile /xxx/.ssh/github_id_rsa
       User git
       Port 443
       ProxyCommand nc -v -x 127.0.0.1:7890 %h %p
      
    • Windows

      • 使用 connect.exe 作为 netcat 的替代品,该程序通常位于 C:\Program Files\Git\mingw64\bin
      • 推荐使用 Git Bash。

      • .ssh/config 示例配置:
      Host github.com
       Hostname ssh.github.com
       IdentityFile /c/users/xxx/.ssh/github_id_rsa
       User git
       Port 443
       ProxyCommand connect -S 127.0.0.1:7890 %h %p
      
  8. 补充信息(Q&A)
    • Q1:为什么使用 ssh.github.com 和 443 端口?
      • 部分网络对 22 端口有限制。
      • 443 端口更稳定可靠,参见 GitHub 官方文档。
      • 使用 22 端口时,hostname 应为 github.com
    • Q2:如果代理需要用户名和密码验证怎么办?
      • 直接在 ProxyCommand 中写入用户名和密码可能不可行,未找到无需输入密码的方案。
      • 临时解决方案:使用 ProxyCommand nc -v -x USERNAME@127.0.0.1:7890 %h %p,并在终端提示时输入密码。
  9. 网页访问加速
    • 通过木弟子访问 GitHub 网页。
    • 使用浏览器扩展(如 SwitchyOmega)或系统代理。
    • 使用 Clash 等工具进行分流。
  10. 配置效果
    • 配置后,git clonegit pullgit push 等操作应明显加速。
  11. 评论区精华内容
    • wang: push 1G 项目卡住的问题,可能是代理节点不稳定,建议更换节点。
    • 悄然: nc 命令参数可能不对,建议修改。
    • DoctorDeng:使用 SSH 代理方式成功提交代码。
    • HalcyonAzure:建议尝试通过 HTTPS 方式访问仓库,并使用 GitHub 的 Personal Access Token 进行验证。