本地 codex 连接 linux 服务器

参考链接:在没有梯子的服务器上使用 VSCode Codex 的完整指南

前置条件

  • 本地安装 codex ,有可以使用的 chatgpt 账号(=本地有代理,代理不要开虚拟网卡)
  • 本地代理端口 127.0.0.1:7897 (clash verge 默认设置?)
  • vscode 可以通过 Remote-SSH 连接到 linux 服务器,且 vscode 装有 codex 插件
  • 服务器安装 codex (通过 npm,可以没有 root 权限)

Step 1 配置 SSH 隧道

编辑本地的 ~/.ssh/config 文件,添加以下内容:

1
2
3
4
5
6
7
8
Host <server>
HostName 172.29.103.202
IdentityFile <path_to_your_private_key>
User <user>
RemoteForward 17897 127.0.0.1:7897
LocalForward 1455 127.0.0.1:1455
ServerAliveInterval 60
ServerAliveCountMax 3
  • RemoteForward(远程转发):在 linux 服务器上开通 SSH 隧道,通向本地内网里的某个服务。
  • LocalForward(本地转发):在你本地开通 SSH 隧道,通向远程服务器里的某个服务。
  • ServerAliveIntervalServerAliveCountMax:用于保持 SSH 连接的活跃状态。

Step 2 复制 Codex 登录凭证到服务器

  • 在本地登录 codex 后,找到 ~/.codex/auth.json 文件,并将其复制到服务器上的相同位置。
1
scp ~/.codex/auth.json <user>@<server>:~/.codex/auth.json
  • 上传后不要在本地退出或重新登录 Codex,否则本地的 token 会更新,服务器上的也会跟着过期,就要重新粘过去。
  • 每隔一段时间如果服务器端 Codex 提示认证失败,重新从本地复制一次最新的 auth.json 即可。

Step 3 配置 VSCode 远程代理

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

这部分可能不需要?我直接在服务器 ~/.bashrc最顶上case $- in 那段之前)添加代理设置:

1
2
3
4
5
6
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$https_proxy
export no_proxy=localhost,127.0.0.1
export NO_PROXY=$no_proxy

检测端口:

1
ss -tlnp | grep 17897

结束后重启终端激活设置,然后检测是否可以连接 OpenAI:

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

或者直接

1
curl https://api.openai.com

如果输出显示 message 之类的就成功了。

Step 4 中止服务器中 codex 进程

检查服务器上的 codex 进程

1
2
pgrep -af codex
for p in $(pgrep -f codex); do echo "== $p =="; tr '\0' '\n' < /proc/$p/environ | grep -i proxy; done

kill 残留进程

1
pkill -f 'codex.*app-server'

重启远程 VSCode 窗口(断开再重新连接)。

Step 5 本地连接检测

本地 ssh 检测

1
ssh <user>@<server> 'curl -sS -o /dev/null -w "%{http_code}\n" https://chatgpt.com/backend-api/codex/responses'

返回 401/405 都算“能通”。

Step 6 爽用 codex

用 vscode 打开一个服务器窗口以连接服务器。

然后爽用 codex。