很多情况下内网服务器无法直连外网,导致安装依赖或使用 AI 助手受阻。本文介绍一种通过 SSH Remote Forward 复用本地代理的完美方案。

VSCode Remote SSH 复用本地代理
343 words

本方案利用 SSH 的 Remote Forward 功能,将远程服务器的流量转发到本地,并使用本机代理科学出网。本方案无需在服务器安装任何软件和 root 权限,完全依赖 SSH 本身的功能。

SSH 远程转发

编辑本地的 ~/.ssh/config 文件,找到对应的主机配置,添加一行 RemoteForward 规则:

Text
Host 10.212.160.162
    HostName 10.212.160.162
    User root
    RemoteForward 47890 127.0.0.1:7890
配置说明

该指令将远程服务器的 47890 端口映射到本地(本机)的 7890 端口。

配置 Shell 代理

登录远程服务器,输入以下命令临时设置环境变量:

Bash
export http_proxy="http://127.0.0.1:47890"
export https_proxy="http://127.0.0.1:47890"
export all_proxy="http://127.0.0.1:47890"

此时 Shell 的网络流量已通过代理转发。执行命令 curl -I https://www.google.com,若返回 HTTP/1.1 200 OK 则说明配置成功。

使代理永久生效

若希望代理永久生效,请将上述命令追加到 ~/.bashrc~/.zshrc 文件末尾。

配置 VSCode 代理

VSCode 及其扩展(如 GitHub Copilot)通常不直接读取 Shell 环境变量,需要在 VSCode 的远程配置文件中显式指定。

打开远程设置文件(通常路径为 ~/.vscode-server/data/Machine/settings.json),添加或修改以下字段:

JSON
{
  "http.proxy": "http://127.0.0.1:47890",
  "http.proxyStrictSSL": false,
  "http.proxySupport": "on",
  "remote.env": {
    "HTTP_PROXY": "http://127.0.0.1:47890",
    "HTTPS_PROXY": "http://127.0.0.1:47890",
    "ALL_PROXY": "http://127.0.0.1:47890"
  }
}

保存文件并重载 VSCode 窗口。检查 GitHub Copilot 状态图标是否正常,或尝试进行一次 AI 对话。