Codex 远程服务器登陆的实现步骤
雨眠.
目标
实现:
- Codex 安装在远程 Linux 服务器上
- 登录与对话请求全部在服务器端完成
- 可配合 Remote SSH / VS Code 正常访问服务器文件
- 无需 API Key,仅使用
codex sign登录
核心思路:
通过 SSH RemoteForward 将服务器的网络请求转发到本地代理端口,让服务器“借用”本机梯子出网。
环境说明
本机
- macOS
- 本地代理端口:
7897(示例)
远程服务器
- 云服务器(ECS / VPS)
- Ubuntu 20 / 22
- 已安装 Codex,但无法登录
原理说明
服务器无法直接访问 OpenAI 相关域名,导致 Codex 登录失败,而本机代理可以正常访问外网。通过 SSH 反向端口转发的流程如下:
服务器访问 127.0.0.1:17897
↓ SSH 隧道
Mac 访问 127.0.0.1:7897(本地代理)
↓
外网
即:服务器通过 SSH 隧道,将流量转回本地代理端口。
Step 1:确认本地代理端口可用
在 Mac 终端执行:
nc -vz 127.0.0.1 7897
必须看到类似以下输出,否则说明代理未启动或端口错误:
Connection to 127.0.0.1 port 7897 [tcp/*] succeeded!
Step 2:建立 SSH RemoteForward 隧道
在 Mac 执行(请替换 USER 与 SERVER_IP):
ssh -N -R 17897:127.0.0.1:7897 USER@SERVER_IP
示例:
ssh -N -R 17897:127.0.0.1:7897 ubuntu@1.2.3.4
说明:
17897为服务器端本地端口7897为本地代理端口- 注意:隧道建立后不要关闭该终端。
Step 3:服务器端验证隧道
另开一个终端登录服务器:
ssh USER@SERVER_IP
在服务器执行:
nc -vz 127.0.0.1 17897
若显示以下内容,说明转发成功:
Connection succeeded!
Step 4:验证服务器是否可通过代理访问外网
在服务器执行:
curl -I -x "http://127.0.0.1:17897" "https://www.google.com"
若返回类似以下状态码,说明服务器已经可以借用本地代理访问外网:
HTTP/2 200
Step 5:让 Codex 走代理登录
在服务器终端执行临时代理配置:
export http_proxy="[http://127.0.0.1:17897](http://127.0.0.1:17897)" export https_proxy="[http://127.0.0.1:17897](http://127.0.0.1:17897)"
然后登录 Codex:
codex sign
后续即可正常进行对话:
codex chat
长期使用方案(推荐 proxy_on / proxy_off)
不建议在服务器端配置永久全局代理,否则一旦 SSH 隧道断开,系统网络会全部卡住。推荐使用快捷命令按需开启。
在服务器编辑 ~/.bashrc:
nano ~/.bashrc
在文件末尾添加:
proxy_on() {
export http_proxy="[http://127.0.0.1:17897](http://127.0.0.1:17897)"
export https_proxy="[http://127.0.0.1:17897](http://127.0.0.1:17897)"
echo "Proxy enabled"
}
proxy_off() {
unset http_proxy https_proxy
echo "Proxy disabled"
}
使其生效:
source ~/.bashrc
使用方式:
proxy_on # 开启代理 codex chat # 愉快使用 proxy_off # 用完关闭代理
Mac 端一键脚本(推荐)
为了避免每次都手动输长长的 SSH 命令,可以在 Mac 端配置自动化脚本。
1. 配置 SSH 免密登录
ssh-copy-id -i ~/.ssh/id_ed25519.pub USER@SERVER_IP
验证是否成功:
ssh USER@SERVER_IP "echo OK"
2. 开启隧道脚本
创建存放脚本的目录及文件:
mkdir -p ~/bin nano ~/bin/codex-tunnel-on
写入以下内容(注意替换 USER@SERVER_IP):
#!/usr/bin/env bash nohup ssh -N \ -o ExitOnForwardFailure=yes \ -o ServerAliveInterval=30 \ -R 17897:127.0.0.1:7897 \ USER@SERVER_IP \ >/dev/null 2>&1 & echo "Codex tunnel started"
赋予执行权限:
chmod +x ~/bin/codex-tunnel-on
3. 关闭隧道脚本
创建文件:
nano ~/bin/codex-tunnel-off
写入以下内容:
#!/usr/bin/env bash pkill -f "ssh.*17897:127.0.0.1:7897" echo "Codex tunnel stopped"
赋予执行权限:
chmod +x ~/bin/codex-tunnel-off
日常使用流程
🟢 开始工作:
- Mac 端运行隧道脚本:
codex-tunnel-on
- 服务器端开启代理并使用:
proxy_on codex chat
🔴 结束工作:
- 服务器端关闭代理:
proxy_off
- Mac 端关闭隧道:
codex-tunnel-off
注意事项
- 不要将本地的
.codex文件夹直接复制到服务器。 - 不要在本地运行 Codex 再试图操作远程文件。
- SSH 隧道关闭后,如果服务器环境变量未
unset,服务器将无法正常访问外网(这就是为什么推荐使用proxy_off)。 - 该方案成本极低、结构清晰、无隐私泄漏风险,非常适合长期使用 Remote SSH 工作流的开发者。
到此这篇关于Codex 远程服务器登陆的实现步骤的文章就介绍到这了,更多相关Codex 远程服务器登陆内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
