在公司服务器上通过 VS Code Remote-SSH 使用 Codex 的代理配置指南

这份文档给初次配置服务器的同事使用。目标是让大家理解并完成下面这件事:

在本地电脑用 VS Code 连接公司服务器时,
让服务器上的 VS Code 插件、Codex、Claude、终端命令等,
尽量都先通过 SSH 隧道回到本机代理,
再从本机代理访问外网。

本文分成两部分:

Fundamental / 基础原理
  解释为什么会出现“终端能联网,VS Code 插件不能联网”。
  这部分偏底层,是理解问题的关键。

Operation / 操作步骤
  直接告诉你改哪些文件、在哪台机器上改、每个文件写什么、怎么检查。
  这部分按步骤照做即可。

本文不会使用任何具体员工、机器或真实端口信息。示例里统一使用占位符:

<SERVER_ALIAS>        VS Code SSH 配置里的服务器别名,例如 company-gpu-01
<SERVER_HOSTNAME>     服务器真实域名或 IP
<SSH_PORT>            SSH 端口
<USERNAME>            你在服务器上的 Linux 用户名
<LOCAL_PROXY_PORT>    本机代理端口,例如本机 Clash 的 HTTP 代理端口
<REMOTE_PROXY_PORT>   服务器上暴露出来的反向转发端口

最终希望得到的网络路径是:

服务器上的 VS Code / Codex / 插件 / 终端
  -> 服务器 127.0.0.1:<REMOTE_PROXY_PORT>
  -> SSH 反向转发
  -> 本机 127.0.0.1:<LOCAL_PROXY_PORT>
  -> 本机 Clash / 其他代理软件
  -> 外网

不要直接复制别人的真实端口。请使用团队约定的端口,或者选择一个未被占用的普通用户端口。一般来说,普通用户端口应大于 1024。


Part 1. Fundamental / 基础原理

1. 常见现象

在公司服务器上使用 VS Code Remote-SSH 时,经常出现这种情况:

远端终端里 curl / git / pip / npm 可以联网。
但是 VS Code 插件、Codex、Claude、ChatGPT 插件无法联网。

很多人会误以为:

终端能联网 = VS Code 插件也应该能联网

这是错的。

原因是:

VS Code 远程终端
和
VS Code 远程插件
不是同一个进程,也不一定读取同一批配置文件。

所以只把代理写进 shell 配置文件,往往只能修好终端,修不好插件。


2. VS Code Remote-SSH 到底启动了什么

当你在本地 VS Code 里连接远程服务器时,结构大致是这样:

本地 VS Code 窗口
  |
  | SSH 连接
  v
服务器上的 sshd
  |
  v
服务器上的 VS Code Server
  |
  +-- server-main.js
  |
  +-- extensionHost
  |     |
  |     +-- 远端 VS Code 插件
  |           |
  |           +-- Codex app-server
  |           +-- Claude 进程
  |           +-- ChatGPT 插件进程
  |
  +-- ptyHost
        |
        +-- VS Code 集成终端 shell
              |
              +-- bash / zsh / fish

这里最重要的是两条路径:

集成终端:
  VS Code Server -> ptyHost -> bash / zsh

插件:
  VS Code Server -> extensionHost -> 插件进程

终端 shell 通常会读取这些文件:

~/.bashrc
~/.bash_profile
~/.profile
~/.zshrc

extensionHost 通常不是由交互式 shell 启动的,所以它不一定读取:

~/.bashrc

因此,如果你只在 ~/.bashrc 里写:

export HTTP_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
export HTTPS_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>

那么可能出现:

终端 shell 有代理。
Codex 插件没有代理。

这就是“终端能通信,插件不能通信”的核心原因。


3. 127.0.0.1 到底是谁

127.0.0.1 永远表示“当前这台机器自己”。

也就是说:

在你的本地电脑上:
  127.0.0.1:<LOCAL_PROXY_PORT>
  表示你本机上的代理软件。

在公司服务器上:
  127.0.0.1:<LOCAL_PROXY_PORT>
  表示服务器自己,不是你的电脑。

所以,服务器上的 VS Code 插件不能直接写:

http://127.0.0.1:<LOCAL_PROXY_PORT>

因为服务器上的 127.0.0.1 不是你的本机。

正确做法是:

在服务器上开一个本地端口:
  127.0.0.1:<REMOTE_PROXY_PORT>

再通过 SSH 把它转发回你的本机:
  127.0.0.1:<LOCAL_PROXY_PORT>

这样服务器上的程序访问:

http://127.0.0.1:<REMOTE_PROXY_PORT>

实际就会走到:

你本机的 127.0.0.1:<LOCAL_PROXY_PORT>

4. SSH RemoteForward 是什么

这里用到的是 SSH 的反向端口转发:

RemoteForward

在本地 SSH 配置里写:

RemoteForward <REMOTE_PROXY_PORT> 127.0.0.1:<LOCAL_PROXY_PORT>

它的意思是:

在服务器上监听:
  127.0.0.1:<REMOTE_PROXY_PORT>

收到请求后,通过 SSH 连接转回本地:
  127.0.0.1:<LOCAL_PROXY_PORT>

也就是:

服务器 127.0.0.1:<REMOTE_PROXY_PORT>
  -> SSH 隧道
  -> 本机 127.0.0.1:<LOCAL_PROXY_PORT>

推荐只绑定服务器的本地回环地址:

127.0.0.1:<REMOTE_PROXY_PORT>

不要绑定成:

0.0.0.0:<REMOTE_PROXY_PORT>

区别是:

127.0.0.1
  只有服务器自己能访问这个端口。

0.0.0.0
  可能让其他机器也能访问这个端口。

正常情况下,RemoteForward 代理端口应该只给服务器本机上的你的程序使用,不应该开放给其他机器。


5. 为什么要设置 HTTP_PROXY / HTTPS_PROXY / ALL_PROXY

很多命令行工具、Node 程序、Python 程序、插件子进程,会读取这些环境变量:

HTTP_PROXY
HTTPS_PROXY
ALL_PROXY
NO_PROXY

也有些程序读取小写版本:

http_proxy
https_proxy
all_proxy
no_proxy

因此,远端推荐同时设置大小写两套:

HTTP_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
HTTPS_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
ALL_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
http_proxy=http://127.0.0.1:<REMOTE_PROXY_PORT>
https_proxy=http://127.0.0.1:<REMOTE_PROXY_PORT>
all_proxy=http://127.0.0.1:<REMOTE_PROXY_PORT>
NO_PROXY=localhost,127.0.0.1,::1
no_proxy=localhost,127.0.0.1,::1

其中 NO_PROXY 很重要。

它的意思是:

访问 localhost、127.0.0.1、::1 时,不要走代理。

这样可以避免本地回环请求被错误地送进代理,导致本机服务互相访问异常。


6. VS Code 还有自己的代理配置

除了环境变量之外,VS Code 还有自己的 HTTP 代理配置。

Remote-SSH 的远端配置文件通常在:

~/.vscode-server/data/Machine/settings.json

推荐写:

{
  "http.proxy": "http://127.0.0.1:<REMOTE_PROXY_PORT>",
  "http.proxySupport": "override",
  "http.proxyStrictSSL": true
}

含义:

http.proxy
  告诉远端 VS Code 使用哪个代理。

http.proxySupport = override
  尽量使用这个显式配置的代理,而不是自动探测出来的其他代理。

http.proxyStrictSSL = true
  保持严格 TLS 证书校验。
  除非公司明确提供了特殊证书方案,否则不要随便改成 false。

这一步是为了让 VS Code 自己的网络请求也更稳定地使用代理。


7. 为什么改完必须重启 VS Code Server

环境变量只会在进程启动时继承。

假设旧的 VS Code Server 已经启动了,然后你才修改:

~/.pam_environment
~/.config/environment.d/60-vscode-ssh-proxy.conf
~/.bashrc
~/.vscode-server/data/Machine/settings.json

旧进程不会自动获得新的环境变量。

这时必须让 VS Code Server 重新启动。

在本地 VS Code 命令面板里运行:

Remote-SSH: Kill VS Code Server on Host...

注意:

这里的三个点 ... 不是要你输入的参数。
它只是 VS Code 菜单里的显示习惯,表示后面还会让你选择服务器。

搜索时输入:

Kill VS Code Server on Host

然后选择对应服务器即可。

这个操作不会重启服务器,也不会影响其他 Linux 用户。它只会杀掉当前用户在那台服务器上的 VS Code Server 相关进程。


8. 这个方案的安全边界

这个方案能做到:

VS Code Remote-SSH 相关进程
Codex 插件
Claude 插件
ChatGPT 插件
VS Code 集成终端
大多数尊重代理变量的命令行工具

都优先走:

服务器 127.0.0.1:<REMOTE_PROXY_PORT>
  -> SSH 隧道
  -> 本机代理

如果你关机、断开 SSH、或者本机代理关闭,那么服务器上的:

127.0.0.1:<REMOTE_PROXY_PORT>

会不可用。已经配置为使用这个代理的程序会连接失败。

这是一种比较安全的“应用层代理”方案。

但是它不是系统级防火墙。

也就是说,如果某个程序完全不看:

HTTP_PROXY
HTTPS_PROXY
ALL_PROXY

并且它自己直接建立 TCP 连接,那么只靠 VS Code 和 SSH 配置不能 100% 拦住它。

如果公司要求:

某个 Linux 用户的所有进程都绝对不能直接出网

那需要管理员做系统层限制,例如:

按 UID 设置防火墙规则
网络命名空间
容器 egress policy
公司统一出口代理策略

这些通常需要 root 权限,不属于普通 VS Code 用户配置。


Part 2. Operation / 操作步骤

下面开始照着做。

请先分清楚:

本地电脑
  你的笔记本或台式机,运行 VS Code 和 Clash / 其他代理软件。

远端服务器
  公司服务器,运行 VS Code Server、Codex 插件、训练脚本等。

本文会明确标出每一步在哪台机器上做。


Step 0. 确认两个端口

需要确认两个端口:

<LOCAL_PROXY_PORT>
  本地电脑代理软件的端口。
  例如 Clash 的 HTTP 代理端口。

<REMOTE_PROXY_PORT>
  服务器上用来接收代理请求的端口。
  服务器上的 VS Code、Codex、终端都会连接这个端口。

它们的关系是:

服务器 127.0.0.1:<REMOTE_PROXY_PORT>
  -> SSH RemoteForward
  -> 本机 127.0.0.1:<LOCAL_PROXY_PORT>

注意:

远端插件使用 <REMOTE_PROXY_PORT>。
本地 VS Code 使用 <LOCAL_PROXY_PORT>。

不要搞反。


Step 1. 在本地电脑修改 SSH 配置

修改本地电脑上的 SSH config。

常见路径:

macOS / Linux:
  ~/.ssh/config

Windows:
  C:\Users\<YOUR_WINDOWS_USER>\.ssh\config

如果你有多个 VS Code 用户配置或多个 VS Code Profile,请确认修改的是 Remote-SSH 真正在用的那个 SSH 配置。

找到目标服务器对应的 Host 块,写成类似这样:

Host <SERVER_ALIAS>
    HostName <SERVER_HOSTNAME>
    User <USERNAME>
    Port <SSH_PORT>
    RemoteForward <REMOTE_PROXY_PORT> 127.0.0.1:<LOCAL_PROXY_PORT>
    ExitOnForwardFailure yes

每一行含义:

Host
  VS Code 里显示或选择的服务器别名。

HostName
  真实服务器地址。

User
  你的服务器用户名。

Port
  SSH 端口。

RemoteForward
  在服务器上开 <REMOTE_PROXY_PORT>,
  并把它转发到本机 <LOCAL_PROXY_PORT>。

ExitOnForwardFailure yes
  如果反向转发失败,SSH 直接失败。
  这样可以避免“VS Code 连上了,但代理没建起来”的半坏状态。

不要写成:

RemoteForward 0.0.0.0:<REMOTE_PROXY_PORT> 127.0.0.1:<LOCAL_PROXY_PORT>

除非你非常明确知道自己在开放一个服务器端口给其他机器访问。普通使用不需要这样做。


Step 2. 在远端服务器修改登录环境变量

在服务器上修改:

~/.pam_environment

如果文件不存在,可以创建。

加入:

# >>> vscode-remote-ssh-local-proxy >>>
HTTP_PROXY DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
HTTPS_PROXY DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
ALL_PROXY DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
http_proxy DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
https_proxy DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
all_proxy DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
NO_PROXY DEFAULT=localhost,127.0.0.1,::1
no_proxy DEFAULT=localhost,127.0.0.1,::1
# <<< vscode-remote-ssh-local-proxy <<<

注意:

~/.pam_environment 不是 shell 脚本。
这里不要写 export。
这里用的是 PAM 环境变量语法。

为什么要改这个文件:

它可能在 SSH 登录会话创建时被读取。
目标是让 VS Code Server 启动时就能继承代理变量。

Step 3. 在远端服务器修改 environment.d 配置

在服务器上创建目录:

mkdir -p ~/.config/environment.d

创建或修改:

~/.config/environment.d/60-vscode-ssh-proxy.conf

写入:

HTTP_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
HTTPS_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
ALL_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
http_proxy=http://127.0.0.1:<REMOTE_PROXY_PORT>
https_proxy=http://127.0.0.1:<REMOTE_PROXY_PORT>
all_proxy=http://127.0.0.1:<REMOTE_PROXY_PORT>
NO_PROXY=localhost,127.0.0.1,::1
no_proxy=localhost,127.0.0.1,::1

注意:

这个文件使用普通 VAR=value 语法。
这里也不要写 export。
这里也不要写 DEFAULT=。

为什么要改这个文件:

有些 Linux 用户会话和用户级服务会读取 ~/.config/environment.d/*.conf。
它是给环境变量多加一条启动路径。

Step 4. 在远端服务器修改 shell 启动文件

如果服务器默认 shell 是 bash,修改:

~/.bashrc

加入:

# >>> vscode-remote-ssh-local-proxy >>>
if [ -n "${SSH_CONNECTION:-}" ]; then
  export HTTP_PROXY="http://127.0.0.1:<REMOTE_PROXY_PORT>"
  export HTTPS_PROXY="http://127.0.0.1:<REMOTE_PROXY_PORT>"
  export ALL_PROXY="http://127.0.0.1:<REMOTE_PROXY_PORT>"

  export http_proxy="$HTTP_PROXY"
  export https_proxy="$HTTPS_PROXY"
  export all_proxy="$ALL_PROXY"

  export NO_PROXY="localhost,127.0.0.1,::1"
  export no_proxy="$NO_PROXY"
fi
# <<< vscode-remote-ssh-local-proxy <<<

为什么要改这个文件:

它让 VS Code 集成终端和你手动运行的命令也使用同一个代理。

但是要记住:

只改 ~/.bashrc 不够。

因为插件不一定读取 ~/.bashrc


Step 5. 在远端服务器修改 VS Code Machine settings

创建目录:

mkdir -p ~/.vscode-server/data/Machine

创建或修改:

~/.vscode-server/data/Machine/settings.json

写入或合并以下配置:

{
  "http.proxy": "http://127.0.0.1:<REMOTE_PROXY_PORT>",
  "http.proxySupport": "override",
  "http.proxyStrictSSL": true
}

如果文件里已经有其他配置,不要直接覆盖整个文件。应该把这三项合并进去。

为什么要改这个文件:

这是远端 VS Code Server 的 Machine 级配置。
它和你本地 VS Code 的 User settings 不是同一个文件。

非常容易混淆的一点:

本地 VS Code User settings:
  应该使用本机代理端口 <LOCAL_PROXY_PORT>。

远端 VS Code Machine settings:
  应该使用服务器上的反向转发端口 <REMOTE_PROXY_PORT>。

Step 6. 可选:修改本地 VS Code User settings

这一步只影响本地 VS Code 自己发出的请求。

如果你的本地 VS Code 也需要走代理,可以在本地 VS Code User settings 里设置:

{
  "http.proxy": "http://127.0.0.1:<LOCAL_PROXY_PORT>",
  "http.proxySupport": "override",
  "http.proxyStrictSSL": true
}

注意:

这里使用 <LOCAL_PROXY_PORT>。
不要写 <REMOTE_PROXY_PORT>。

因为这是本地 VS Code 配置,本地的 127.0.0.1 指的是你的电脑。


Step 7. 重启远端 VS Code Server

改完上面的文件后,必须重启远端 VS Code Server。

在本地 VS Code 里:

Ctrl+Shift+P

搜索:

Kill VS Code Server on Host

选择:

Remote-SSH: Kill VS Code Server on Host...

然后选择:

<SERVER_ALIAS>

说明:

三个点 ... 不是要输入的内容。
它只是 VS Code 命令名字的一部分,表示后续会弹出选择框。

这个操作会影响:

你自己在这台服务器上的 VS Code Remote-SSH server。
你自己当前连接这台服务器的 VS Code 窗口。
你自己 VS Code 里开的远端终端和远端插件。

这个操作不会影响:

其他 Linux 用户。
整台服务器。
系统 sshd 服务。
服务器上的操作系统。

执行完后,重新通过 VS Code Remote-SSH 连接服务器。


Step 8. 检查服务器上的反向转发端口

在远端服务器上运行:

ss -ltnp | grep '<REMOTE_PROXY_PORT>'

期望看到类似:

LISTEN 0 128 127.0.0.1:<REMOTE_PROXY_PORT> 0.0.0.0:*

好结果:

127.0.0.1:<REMOTE_PROXY_PORT>

风险较大的结果:

0.0.0.0:<REMOTE_PROXY_PORT>

如果什么都没有,说明 SSH 反向转发没有建立。回去检查本地 SSH config:

RemoteForward <REMOTE_PROXY_PORT> 127.0.0.1:<LOCAL_PROXY_PORT>
ExitOnForwardFailure yes

然后重新连接。


Step 9. 检查远端终端环境变量

在远端服务器终端运行:

env | grep -i proxy

期望看到:

HTTP_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
HTTPS_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
ALL_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
NO_PROXY=localhost,127.0.0.1,::1

如果终端没有这些变量,检查:

~/.bashrc
~/.pam_environment
~/.config/environment.d/60-vscode-ssh-proxy.conf

然后重开终端或重新连接 VS Code。


Step 10. 检查 VS Code 插件进程环境变量

在远端服务器上列出相关进程:

pgrep -a -u "$USER" -f 'vscode|code-server|codex|chatgpt|claude|node'

重点找这些进程:

server-main.js
extensionHost
ptyHost
codex app-server
claude

拿到 PID 后检查:

tr '\0' '\n' < /proc/<PID>/environ | grep -i proxy

期望这些关键进程都能看到:

HTTP_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
HTTPS_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
ALL_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
NO_PROXY=localhost,127.0.0.1,::1

如果终端有代理,但 extensionHost 没有代理,通常说明:

VS Code Server 是旧进程,还没有重启。

解决方式:

Remote-SSH: Kill VS Code Server on Host...

然后重新连接。


Step 11. 用 curl 测试 OpenAI 连通性

在远端服务器运行:

curl -I --max-time 12 \
  -x http://127.0.0.1:<REMOTE_PROXY_PORT> \
  https://api.openai.com/v1/models

如果看到:

HTTP/1.1 200 Connection established
HTTP/2 401

这是成功的网络形态。

解释:

HTTP/1.1 200 Connection established
  说明代理隧道建立成功。

HTTP/2 401
  说明请求已经到达 OpenAI API。
  401 是因为测试请求没有带 API token。
  这不是网络失败。

常见失败:

Connection refused
  服务器上的 <REMOTE_PROXY_PORT> 没有监听。

Connection timed out
  SSH 隧道或本机代理不可用。

Could not resolve host
  DNS 或代理路由有问题。

Part 3. 需要修改哪些文件

这一节只列文件路径,方便检查。

本地电脑需要修改

1. 本地 SSH config

路径通常是:

macOS / Linux:
  ~/.ssh/config

Windows:
  C:\Users\<YOUR_WINDOWS_USER>\.ssh\config

加入或修改:

Host <SERVER_ALIAS>
    HostName <SERVER_HOSTNAME>
    User <USERNAME>
    Port <SSH_PORT>
    RemoteForward <REMOTE_PROXY_PORT> 127.0.0.1:<LOCAL_PROXY_PORT>
    ExitOnForwardFailure yes

2. 可选:本地 VS Code User settings

这是本地 VS Code 配置,不是远端配置。

写:

{
  "http.proxy": "http://127.0.0.1:<LOCAL_PROXY_PORT>",
  "http.proxySupport": "override",
  "http.proxyStrictSSL": true
}

远端服务器需要修改

1. ~/.pam_environment

写 PAM 格式:

HTTP_PROXY DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
HTTPS_PROXY DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
ALL_PROXY DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
http_proxy DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
https_proxy DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
all_proxy DEFAULT=http://127.0.0.1:<REMOTE_PROXY_PORT>
NO_PROXY DEFAULT=localhost,127.0.0.1,::1
no_proxy DEFAULT=localhost,127.0.0.1,::1

不要写 export

2. ~/.config/environment.d/60-vscode-ssh-proxy.conf

写普通环境变量格式:

HTTP_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
HTTPS_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
ALL_PROXY=http://127.0.0.1:<REMOTE_PROXY_PORT>
http_proxy=http://127.0.0.1:<REMOTE_PROXY_PORT>
https_proxy=http://127.0.0.1:<REMOTE_PROXY_PORT>
all_proxy=http://127.0.0.1:<REMOTE_PROXY_PORT>
NO_PROXY=localhost,127.0.0.1,::1
no_proxy=localhost,127.0.0.1,::1

不要写 export,也不要写 DEFAULT=

3. ~/.bashrc

写 shell 格式:

export HTTP_PROXY="http://127.0.0.1:<REMOTE_PROXY_PORT>"
export HTTPS_PROXY="http://127.0.0.1:<REMOTE_PROXY_PORT>"
export ALL_PROXY="http://127.0.0.1:<REMOTE_PROXY_PORT>"
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"
export NO_PROXY="localhost,127.0.0.1,::1"
export no_proxy="$NO_PROXY"

4. ~/.vscode-server/data/Machine/settings.json

写 JSON 格式:

{
  "http.proxy": "http://127.0.0.1:<REMOTE_PROXY_PORT>",
  "http.proxySupport": "override",
  "http.proxyStrictSSL": true
}

如果已有其他配置,要合并,不要覆盖。


Part 4. 最终检查清单

配置完成后,逐项检查:

[ ] 本地 SSH config 有 RemoteForward。
[ ] 本地 SSH config 有 ExitOnForwardFailure yes。
[ ] 远端 ~/.pam_environment 有代理变量。
[ ] 远端 ~/.config/environment.d/60-vscode-ssh-proxy.conf 有代理变量。
[ ] 远端 ~/.bashrc 有代理变量。
[ ] 远端 ~/.vscode-server/data/Machine/settings.json 有 http.proxy 设置。
[ ] 已执行 Remote-SSH: Kill VS Code Server on Host...
[ ] 已重新连接服务器。
[ ] ss 能看到 127.0.0.1:<REMOTE_PROXY_PORT> 正在监听。
[ ] env | grep -i proxy 能看到代理变量。
[ ] VS Code extensionHost 进程有代理变量。
[ ] Codex app-server 进程有代理变量。
[ ] curl 通过远端代理能连接 api.openai.com。

全部通过后,远端 Codex 的网络路径应当是:

Codex / VS Code 远端插件
  -> 服务器 127.0.0.1:<REMOTE_PROXY_PORT>
  -> SSH 反向转发
  -> 本机 127.0.0.1:<LOCAL_PROXY_PORT>
  -> 本机代理软件
  -> 外网

Part 5. 一句话总结

这个问题的根因是:

VS Code 远端终端和 VS Code 远端插件不是同一个启动链路。
终端能读到 ~/.bashrc,不代表插件也能读到。

正确修法是:

本地 SSH config 负责建立 RemoteForward。
远端登录环境负责让 VS Code Server 启动时继承代理。
远端 shell 配置负责让终端继承代理。
远端 VS Code Machine settings 负责让 VS Code 自己使用代理。
最后必须重启 VS Code Server,让新配置进入进程环境。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐