在没有梯子的服务器上使用 VSCode Codex 的完整指南
适用场景:学校服务器无法直接访问 OpenAI,但你的笔记本可以(通过代理)。
一、总体思路
- 在笔记本上配置 SSH 远程端口转发:把服务器的某个端口(如
17897)映射到笔记本的代理端口(如7897)。 - 在 VSCode 远程设置中配置代理:让 Codex 的请求走
127.0.0.1:17897,也就是通过隧道发到笔记本,再由笔记本的代理访问 OpenAI。 - 解决登录问题:先在笔记本上完成 Codex 登录,把生成的
auth.json复制到服务器,避免远程再次打开浏览器被拦截。
二、准备工作
- 笔记本(macOS / Windows)能通过代理正常访问外网。
- 笔记本上已安装 Clash(或类似工具),本地代理端口为
7897(HTTP 或 SOCKS5)。 - 服务器只能在学校内网访问,但你能通过 SSH 连接上。
- VSCode 已安装 Remote-SSH 和 Codex 插件。
- 笔记本上先在本地 VSCode 中登录 Codex 一次(正常打开本地窗口,用浏览器授权登录),确保登录成功。
三、配置 SSH 隧道
编辑笔记本上的 ~/.ssh/config 文件,添加:
1 | Host bios |
说明:
RemoteForward 7890 127.0.0.1:7890表示把服务器上的7890端口,通过 SSH 隧道转发到你笔记本的127.0.0.1:7890(代理端口)。LocalForward 1455 127.0.0.1:1455表示把服务器上的1455端口,通过 SSH 隧道转发到你笔记本的127.0.0.1:1455。(这个端口是 Codex 插件用来本地通信的,保持不变即可)。ServerAliveInterval和ServerAliveCountMax是为了保持 SSH 连接稳定,防止长时间不活动被断开。
四、复制 Codex 登录凭证到服务器
在笔记本上登录codex后,找到
~/.codex/auth.json文件,这里面包含了你的登录凭证(access token 和 refresh token)。使用
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 远程代理
- 在 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"
} - 重启远程 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 行不通,还有一种更麻烦但也可行的方法:
- 关闭梯子,先连上服务器的 VSCode。(服务器不能在梯子上连接。)
- 连上之后打开梯子,在远程vscode里面登录codex。
- 如果配置成功,应该在本地会开一个openai登录网页。
- 在本地浏览器登录后,服务器上的 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就不用折腾这些了。