GitHub 加速:代理搭建指南

177 阅读3分钟

1. 背景

公司的云服务资源都是在上海,但在上海机器上拉github代码,不稳定,需要翻墙

因此尝试在上海ECS机器创建代理,通过1台香港的机器做跳板,,在上海机器执行git clone github相关资源时,可以通过香港机器拉取资源,从而实现一个简易的VPN

因为我要限定仅git clone github时走代理,因此在配置时候是指定了github的域名,如果需要全部走代理,其实原理是一样,配置一个全局的代理即可。

2. 准备阶段

上海 ECS:需联网,能访问香港 ECS 的 22 端口。

香港 ECS(代理服务器):已开启 SSH 服务(默认 22 端口),知道登录用户名(如root)和公网 IP(如123.456.789.0),以及登录密码

3. 搭建步骤

在上海ECS生成SSH秘钥对(用于免密登录)

登录上海 ECS,执行以下命令生成无密码密钥对:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/hk_ecs_key -N ""

一路回车,无需输入密码,生成两个文件:

  • 私钥:~/.ssh/hk_ecs_key
  • 公钥:~/.ssh/hk_ecs_key.pub

将生成的公钥上传到香港ECS

  1. 手动复制公钥内容(在上海 ECS 执行)

    cat ~/.ssh/hk_ecs_key.pub

复制输出的完整公钥字符串(类似 ssh-rsa AAAAB3NzaC1yc2E...

  1. 登录香港ECS并添加公钥(在香港ECS执行)

    在香港ECS执行,创建.ssh目录(若不存在)

    mkdir -p ~/.ssh && chmod 700 ~/.ssh

    编辑授权文件,粘贴复制的公钥

    vim ~/.ssh/authorized_keys

  2. 授权文件权限(在香港ECS执行)

    chmod 600 ~/.ssh/authorized_keys

  3. 验证免密登录(在上海ECS执行)

    ssh -i ~/.ssh/hk_ecs_key root@123.456.789.0

建立代理通道(上海 ECS)

  1. 启动 SOCKS5 隧道(本地监听 7890 端口,后台运行)

    ssh -i ~/.ssh/hk_ecs_key -fN -D 127.0.0.1:7890 root@123.456.789.0

  2. 验证隧道是否启动

    pgrep -f "ssh -i ~/.ssh/hk_ecs_key -fN -D 127.0.0.1:7890 root@123.456.789.0"

配置SSH代理规则(上海 ECS)

  1. 创建 / 编辑 SSH 配置文件

    vim ~/.ssh/config

  2. 添加以下内容(仅对 GitHub 的 SSH 连接生效)

    Host github.com ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p # 通过本地7890隧道转发 ServerAliveInterval 10 # 保持连接活跃 StrictHostKeyChecking no # 自动信任GitHub主机

  3. 修复配置文件权限

    chmod 600 ~/.ssh/config

  4. 验证代理是否生效

    ssh -vT git@github.com 2>&1 | grep "via proxy"

  • 若输出含 Authenticated to github.com (via proxy),说明代理生效。
  1. 尝试克隆一个Github仓库验证,能征程克隆既完成验证

配置Http的代理规则(上海ECS)

  1. 配置Git代理

    仅针对Git的地址

    git config --global http.github.com.proxy socks5://127.0.0.1:7890 git config --global https.github.com.proxy socks5://127.0.0.1:7890

    全局代理,针对所有http的请求

    git config --global http.proxy socks5://127.0.0.1:7890 git config --global https.proxy socks5://127.0.0.1:7890

    如果想重新设置,可以取消代理

    取消全局代理

    git config --global --unset http.proxy git config --global --unset https.proxy

    取消 GitHub 专用代理

    git config --global --unset http.github.com.proxy git config --global --unset https.github.com.proxy

  2. 查看是否配置正确

    git config --global --list | grep proxy

若输出类似 http.https://github.com.proxy=socks5://127.0.0.1:7890,说明配置已生效。

  1. 使用 curl 配合代理测试 GitHub 连接,模拟 Git 的 HTTP 请求

    curl -x socks5://127.0.0.1:7890 github.com -v