在 VS Code Remote-SSH 中通过本地代理使用 Codex 插件

Made by Mike_Zhang


Unfold Linux Topics $\triangledown$


本文假设:你本地电脑已经有可用代理。我们不讨论代理软件怎么搭,只讨论如何让 VS Code Remote-SSH 里的 Codex 插件 使用这个本地代理。

NO BULLSHIT

如果你只想先跑起来,推荐方案是:

  1. 本地代理尽量使用 HTTP proxy 端口,例如 http://127.0.0.1:7890
  2. 在 VS Code 本地设置代理:
1
2
3
4
5
6
{
"http.proxy": "http://127.0.0.1:7890",
"http.noProxy": ["localhost", "127.0.0.1", "::1"],
"http.proxySupport": "override",
"http.proxyStrictSSL": true
}
  1. 在本地电脑的 ~/.ssh/config 中为远程服务器加上 RemoteForward
1
2
3
4
5
6
Host my-server-codex
HostName your-server.example.com
User your-user
RemoteForward 17890 127.0.0.1:7890
ExitOnForwardFailure yes
ServerAliveInterval 60
  1. 在 VS Code Remote-SSH 里连接 my-server-codex,打开 Remote Settings,给远端 VS Code 写入:
1
2
3
4
5
6
{
"http.proxy": "http://127.0.0.1:17890",
"http.noProxy": ["localhost", "127.0.0.1", "::1"],
"http.proxySupport": "override",
"http.proxyStrictSSL": true
}
  1. 重启 VS Code Remote-SSH server,确认 Codex 插件安装在 SSH: my-server-codex 远端。

Intro

最近很多人遇到一个很现实的问题:

  • 本地电脑可以通过代理访问 Codex;
  • 但是远程服务器因为网络限制,不能直接访问 chatgpt.com / OpenAI 相关服务;
  • 用 VS Code Remote-SSH 连接服务器以后,Codex 插件经常登录失败、请求报错、卡在 Thinking,或者插件不能稳定访问远端项目。

简单来说,坑点在这里:

VS Code 本地能联网,不代表 Remote-SSH 里的远端 extension host 能联网。

VS Code Remote-SSH 连接远程服务器后,很多插件其实运行在远端的 VS Code Server / extension host 里。远端看到的 127.0.0.1服务器自己的 localhost,不是你本地电脑的 localhost。

所以这篇文章的目标很简单:用 ~/.ssh/config 把本地代理端口转发给远端,再让远端 VS Code 的 Codex 插件使用这个转发端口。


1. What is Happening

1. 先理解数据到底怎么走

使用 VS Code Remote-SSH 时,事情不是“本地 VS Code 直接操作服务器文件”这么简单。更准确地说,是有三层东西同时存在:

  • Local Laptop:你看见的 VS Code 界面,以及本地已经能用的代理端口,例如 127.0.0.1:7890
  • SSH RemoteForward:一条通过 SSH 建立的端口转发,把远端的 17890 映射回本地代理;
  • Remote Server:远端 VS Code Server、remote extension host、Codex 插件和你的项目文件。

先看整体数据流:

VS Code Remote SSH Codex proxy data flow

简单来说,一次 Codex 插件请求大概是这样走的:

  1. 你在本地 VS Code UI 里打开 Codex 面板,输入 prompt;
  2. Codex 插件运行在远端 extension host,所以它能直接读取远程服务器上的项目文件;
  3. 我们在 Remote Settings 里告诉远端 VS Code:HTTP 请求优先使用这个代理入口:
1
http.proxy = http://127.0.0.1:17890
  1. 对远端服务器来说,127.0.0.1:17890 是服务器自己的 localhost 端口;
  2. 但因为 ~/.ssh/config 里设置了:
1
RemoteForward 17890 127.0.0.1:7890

远端的 17890 端口会被 SSH 转发回本地电脑127.0.0.1:7890

  1. 最后由本地代理访问 chatgpt.com / OpenAI 服务,再沿着同一条路径把响应传回 Codex 插件,并显示在本地 VS Code 界面里。

2. Prepare Local VS Code Proxy

2. 先让 VS Code 本地侧正常走代理

打开 VS Code:

1
2
Command Palette (macOS: Cmd + Shift + P, Windows/Linux: Ctrl + Shift + P)
-> Preferences: Open User Settings (JSON)

加入:

1
2
3
4
5
6
{
"http.proxy": "http://127.0.0.1:7890",
"http.noProxy": ["localhost", "127.0.0.1", "::1"],
"http.proxySupport": "override",
"http.proxyStrictSSL": true
}

其中:

  • http.proxy:你的本地 HTTP 代理地址;
  • http.noProxy:让 localhost / loopback 这类本地回调地址不要走代理,避免登录回调或本地服务被误代理;
  • http.proxySupport: "override":让 VS Code 的 HTTP client 优先使用这个设置;
  • http.proxyStrictSSL: true:正常情况下保持 true,不要随便关 SSL 检查。

如果你使用的是 Clash / V2Ray / sing-box 这类工具,一般会同时提供 HTTP 和 SOCKS5 两个端口。建议先用 HTTP proxy 端口,例如 7890 / 1081


3. Configure SSH RemoteForward

3. 在 ~/.ssh/config 中把本地代理带到服务器

假设:

  • 本地代理:127.0.0.1:7890
  • 远端给 VS Code 使用的代理地址:127.0.0.1:17890

在本地电脑编辑:

1
~/.ssh/config

加入:

1
2
3
4
5
6
Host my-server-codex
HostName your-server.example.com
User your-user
RemoteForward 17890 127.0.0.1:7890
ExitOnForwardFailure yes
ServerAliveInterval 60

然后在 VS Code Remote-SSH 里连接:

1
Remote-SSH: Connect to Host... -> my-server-codex

这里的关键是:

1
RemoteForward 17890 127.0.0.1:7890

它的含义是:远程服务器上的 17890 端口会通过 SSH 连接转发到本地电脑的 127.0.0.1:7890

注意:如果服务器禁用了 TCP forwarding,这一步会失败,需要服务器管理员允许 AllowTcpForwarding。如果 17890 被占用,就换一个端口,比如 17891


4. Configure Remote VS Code Settings

4. 让远端 VS Code 使用转发后的代理端口

连接到 Remote-SSH 后,打开:

1
2
Command Palette (macOS: Cmd + Shift + P, Windows/Linux: Ctrl + Shift + P)
-> Preferences: Open Remote Settings (JSON)

加入:

1
2
3
4
5
6
{
"http.proxy": "http://127.0.0.1:17890",
"http.noProxy": ["localhost", "127.0.0.1", "::1"],
"http.proxySupport": "override",
"http.proxyStrictSSL": true
}

这一步的意思是:在这个 Remote-SSH 窗口中,远端 VS Code 的 HTTP 请求优先使用 127.0.0.1:17890,也就是前面通过 RemoteForward 转发出来的本地代理。http.noProxy 保留 localhost / loopback 地址,减少本地回调和远端本地服务被误代理的概率。

改完后建议重启远端 VS Code Server:

1
2
Command Palette (macOS: Cmd + Shift + P, Windows/Linux: Ctrl + Shift + P)
-> Remote-SSH: Kill VS Code Server on Host...

然后重新连接 my-server-codex


5. Install Codex Extension on Remote

5. 确认 Codex 插件安装在 Remote-SSH 远端

连接 Remote-SSH 后,打开 VS Code Extensions 面板,搜索 Codex。

你需要注意插件安装位置:

  • 如果按钮显示 Install in SSH: my-server-codex,说明它还没有安装到远端;
  • 如果显示已经安装在 SSH: my-server-codex,说明 Codex 插件会运行在远端 extension host;
  • 对于需要读写远程项目文件的场景,建议安装在远端,而不是只装在本地 UI 侧。

简单来说,Codex 插件要能看到你的远程代码仓库,就应该在 Remote-SSH 远端环境里运行。

如果插件没有响应,可以打开:

1
2
View -> Output -> Codex
View -> Output -> Remote - SSH

检查是否有 proxytimeout403ECONNREFUSEDEACCES 等关键词。这里先不要急着改一堆配置,先确认 ~/.ssh/config 的 Host 确实是 VS Code 当前连接的那个 Host,并且 RemoteForward 端口没有被占用。


6. My Suggested Workflow

6. 我的建议

如果我是从零帮同学配置,我会按这个顺序:

  1. 本地确认 HTTP proxy 端口可用,例如 127.0.0.1:7890
  2. VS Code 本地 settings 写入 http.proxy
  3. ~/.ssh/config 写入 RemoteForward 17890 127.0.0.1:7890
  4. 用 VS Code Remote-SSH 连接这个 Host。
  5. 在远端 Remote Settings 里写入 http.proxy: "http://127.0.0.1:17890",并保留 http.noProxy
  6. Remote-SSH: Kill VS Code Server on Host... 后重连。
  7. 确认 Codex 插件安装在远端 SSH: my-server-codex

这条路径的好处是配置集中在两个地方:

  • 本地 ~/.ssh/config 负责把本地代理转发给远端;
  • 远端 VS Code Remote Settings 负责让 Codex 插件使用转发后的代理。

Summary

总结

VS Code Remote-SSH 下使用 Codex 插件的核心不是“本地 VS Code 设置一个 proxy”这么简单,而是要分清楚:

  • 本地 VS Code 的网络;
  • 远程 VS Code Server / extension host 的网络;
  • ~/.ssh/config 里的 RemoteForward
  • Remote Settings 里的 http.proxy

一句话总结:

把本地代理通过 RemoteForward 暴露成远端 localhost 端口,再在 Remote Settings 里把 http.proxy 指向这个端口。

这样配置以后,Codex 插件既能运行在远端、读写远程项目文件,又能通过本地电脑已有的代理访问网络。


References

Microsoft. Network Connections in Visual Studio Code. https://code.visualstudio.com/docs/setup/network (accessed May 12, 2026).

Microsoft. Remote Development using SSH. https://code.visualstudio.com/docs/remote/ssh (accessed May 12, 2026).

OpenAI. Codex IDE extension. https://developers.openai.com/codex/ide (accessed May 12, 2026).

OpenAI. Codex IDE extension settings. https://developers.openai.com/codex/ide/settings (accessed May 12, 2026).

OpenBSD. ssh_config(5). https://man.openbsd.org/ssh_config (accessed May 12, 2026).

OpenAI Codex GitHub Issue #2987. VS Code Remote-SSH: Codex extension stuck on “Thinking”. https://github.com/openai/codex/issues/2987 (accessed May 12, 2026).

OpenAI Codex GitHub Issue #11998. Linux / VS Code / Codex token exchange failed when system proxy enabled. https://github.com/openai/codex/issues/11998 (accessed May 12, 2026).


原创文章,转载请标明出处
Made by Mike_Zhang




感谢你的支持 | Thank you for supporting

在 VS Code Remote-SSH 中通过本地代理使用 Codex 插件
https://ultrafish.io/post/codex-vscode-remote-ssh-proxy/
Author
Mike_Zhang
Posted on
May 12, 2026
Licensed under