背景

国内云服务器(如腾讯云、阿里云)在拉取 GitHub 代码或 Hugging Face 模型时,常因网络原因导致连接超时或速度极慢。在服务器端安装和维护代理软件不仅繁琐,还可能带来安全风险。

本文介绍一种零侵入式的解决方案:SSH 远程端口转发 (Remote Port Forwarding)。该方案允许服务器直接复用本地电脑的网络代理,无需在服务器上安装任何额外软件。

核心原理

SSH 隧道可以将服务器的某个端口映射到本地电脑的端口。当配置为“远程端口转发”模式时,数据流向如下:

  1. 请求发起:云服务器向其本机端口(如 127.0.0.1:7890)发送网络请求。
  2. 隧道传输:SSH 进程捕获该请求,通过已建立的加密 SSH 连接(隧道)将其回传至本地电脑。
  3. 代理转发:本地电脑将请求转发给本地运行的代理软件(如 Clash、V2Ray)。
  4. 响应返回:代理软件访问目标网站(如 GitHub),将数据原路通过隧道返回给云服务器。

简而言之,就是让服务器“借用”本地电脑的网络环境访问互联网。

前置条件

  1. 本地电脑已开启代理软件,并获知端口号(通常 HTTP/Socks5 端口为 7890 或 1080)。
  2. 本地电脑可通过 SSH 连接至云服务器。

操作步骤

方式一:使用命令行(macOS/Linux/Windows PowerShell)

在本地终端执行连接命令时,增加 -R 参数:

# 语法:ssh -R 远程端口:127.0.0.1:本地代理端口 用户@服务器IP
ssh -R 7890:127.0.0.1:7890 root@120.xx.xx.xx
  • 7890(第一个):在服务器上监听的端口。
  • 127.0.0.1:7890(第二个):本地代理软件的地址和端口。

方式二:使用 MobaXterm(Windows GUI)

  1. 点击顶部菜单 Tunneling
  2. 选择 New SSH tunnel
  3. 勾选 Remote port forwarding(远程端口转发)。
  4. 填写配置:
  • Remote server (左侧): 端口填 7890(或任意空闲端口)。
  • SSH server (中间): 填写服务器 IP、用户名、端口。
  • Local server (右侧): 地址填 127.0.0.1,端口填本地代理端口(如 7890)。
  1. 保存并点击 Start 启动隧道。

服务器端配置

建立连接后,服务器的 7890 端口已连通本地代理。需设置环境变量让系统工具走该代理。

在服务器终端执行:

export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890

验证连通性:

curl -I https://www.google.com

若返回 HTTP/1.1 200 OK301 Moved,即表示配置成功。

此时执行 git clonepython 脚本下载模型,均将通过本地网络加速。

优缺点总结

  • 优点

  • 零安装:服务器端无需安装任何代理工具,保持环境纯净。

  • 安全:流量通过 SSH 加密隧道传输,不暴露公网端口。

  • 灵活:随用随开,断开 SSH 连接即停止代理。

  • 局限

  • 依赖本地电脑的网络上行带宽(通常足够用于代码拉取)。

  • 环境变量配置仅在当前终端会话有效,重启或新开窗口需重新 export