在没有梯子的服务器上使用 VSCode Codex 的完整指南

在没有梯子的服务器上使用 VSCode Codex 的完整指南

适用场景:学校服务器无法直接访问 OpenAI,但你的笔记本可以(通过代理)。

一、总体思路

  1. 在笔记本上配置 SSH 远程端口转发:把服务器的某个端口(如 17897)映射到笔记本的代理端口(如 7897)。
  2. 在 VSCode 远程设置中配置代理:让 Codex 的请求走 127.0.0.1:17897,也就是通过隧道发到笔记本,再由笔记本的代理访问 OpenAI。
  3. 解决登录问题:先在笔记本上完成 Codex 登录,把生成的 auth.json 复制到服务器,避免远程再次打开浏览器被拦截。

二、准备工作

  • 笔记本(macOS / Windows)能通过代理正常访问外网。
  • 笔记本上已安装 Clash(或类似工具),本地代理端口为 7897(HTTP 或 SOCKS5)。
  • 服务器只能在学校内网访问,但你能通过 SSH 连接上。
  • VSCode 已安装 Remote-SSHCodex 插件。
  • 笔记本上先在本地 VSCode 中登录 Codex 一次(正常打开本地窗口,用浏览器授权登录),确保登录成功。

三、配置 SSH 隧道

编辑笔记本上的 ~/.ssh/config 文件,添加:

1
2
3
4
5
6
7
8
Host bios
HostName 172.29.103.202
IdentityFile <path_to_your_private_key>
User <your_username>
RemoteForward 7890 127.0.0.1:7890
LocalForward 1455 127.0.0.1:1455
ServerAliveInterval 60
ServerAliveCountMax 3

说明

  1. RemoteForward 7890 127.0.0.1:7890 表示把服务器上的 7890 端口,通过 SSH 隧道转发到你笔记本的 127.0.0.1:7890(代理端口)。
  2. LocalForward 1455 127.0.0.1:1455 表示把服务器上的 1455 端口,通过 SSH 隧道转发到你笔记本的 127.0.0.1:1455。(这个端口是 Codex 插件用来本地通信的,保持不变即可)。
  3. ServerAliveIntervalServerAliveCountMax 是为了保持 SSH 连接稳定,防止长时间不活动被断开。

四、复制 Codex 登录凭证到服务器

  1. 在笔记本上登录codex后,找到 ~/.codex/auth.json 文件,这里面包含了你的登录凭证(access token 和 refresh token)。

  2. 使用 scp 命令将这个文件复制到服务器上:

    1
    2
    # 将笔记本的 auth.json 上传到服务器
    scp ~/.codex/auth.json your_username@172.29.103.202:~/.codex/auth.json

    或者直接vscode粘过去。

重要

  • 上传后不要在本机退出或重新登录 Codex,否则本地的 token 会更新,服务器上的也会跟着过期,就要重新粘过去。
  • 每隔一段时间(通常几周到几个月)如果服务器端 Codex 提示认证失败,重新从笔记本复制一次最新的 auth.json 即可。

五、配置 VSCode 远程代理

  1. 在 VSCode 中通过 Remote-SSH 连接到服务器。
  2. 打开远程设置:Cmd/Ctrl + Shift + P → 输入 Preferences: Open Remote Settings (JSON)
  3. 在打开的 JSON 文件中添加:
    1
    2
    3
    4
    {
    "http.proxy": "http://127.0.0.1:17897",
    "http.proxySupport": "override"
    }
  4. 重启远程 VSCode 窗口(断开再重新连接),让设置生效。

六、验证

在服务器的终端中执行:

1
curl -x http://127.0.0.1:17897 https://api.openai.com

如果返回类似 "error": { "message": "You didn't provide an API key..." } 的 JSON,说明隧道和代理已经通了。

接下来在服务器的 VSCode 中打开一个新的 Codex 窗口,测试一下是否能正常使用 Codex 功能(如自动补全、代码生成等)。如果一切顺利,你应该可以在服务器上无缝使用 Codex,就像在本地一样。

七、其他方法

如果 auth.json 行不通,还有一种更麻烦但也可行的方法:

  1. 关闭梯子,先连上服务器的 VSCode。(服务器不能在梯子上连接。)
  2. 连上之后打开梯子,在远程vscode里面登录codex。
  3. 如果配置成功,应该在本地会开一个openai登录网页。
  4. 在本地浏览器登录后,服务器上的 Codex 就能正常使用了。

八、常见问题

1. 连接服务器时被拒绝(kex_exchange_identification: Connection closed by remote host

  • 原因:你的代理客户端开启了 TUN 模式(增强模式),修改了 SSH 流量的源 IP,服务器拒绝外网连接。
  • 解决关闭 TUN 模式,只保留 HTTP/SOCKS5 代理端口。不要在 SSH 配置中加 ProxyCommand

2. Codex 仍然报 403 或地区限制

  • 检查远程设置中的 http.proxy 是否写成了 http://127.0.0.1:17897
  • 在服务器终端用 curl 测试时,确保代理返回正常。
  • 检查本地代理客户端是否开启了“允许局域网连接”(Allow LAN),即使不开通常也没事,但开了更稳。

3. 服务器上的 Codex 突然提示需要重新登录

  • 这表示 auth.json 中的 refresh token 过期了。
  • 回到笔记本,先确认本地 Codex 仍然能正常使用(如果不行,在笔记本上重新登录一次)。
  • 然后重新执行 scp ~/.codex/auth.json 服务器:~/.codex/auth.json 即可。

如果还有问题,先在本机用 curl -x http://127.0.0.1:7897 https://api.openai.com 验证代理本身没问题,再逐步排查隧道和 VSCode 设置。

总之就是很麻烦的,配置成功用起来也很麻烦。许愿要一个主机配置cliproxyapi就不用折腾这些了。