Codex 连接远端 Ubuntu 服务器
Codex 连接远端 Ubuntu 服务器配置记录(中转站版)
本地系统:Windows
本地用户目录:C:\Users\ASUS
远端用户:user
远端地址:0.0.0.0
SSH 别名:sm5
远端工作目录示例:/home/user/codex_mini
远端 Codex CLI 示例版本:codex-cli 0.145.0
0. 最终目标
让本地 Codex / ChatGPT Desktop 通过 SSH 连接远端服务器,并在远端目录中工作。
最终应满足:
ssh sm5 "command -v codex && codex --version"
能输出类似:
/home/user/.local/bin/codex
codex-cli 0.145.0
1. 本地直接连接远端服务器
指令
ssh user@0.0.0.0
指令目的
验证 Windows 本地能否通过 SSH 登录远端服务器。
成功表现
Welcome to Ubuntu 20.04.6 LTS
user@服务器名:~$
可能出现的问题
Codex Desktop 连接时没有出现输入密码的步骤。
解决办法
Codex Desktop 更推荐用 SSH Key 登录。先保证 Windows 命令行能连上,再配置 SSH Key 或 SSH alias。
1)在 Windows 本地生成 SSH Key
在 Windows CMD 或 PowerShell 执行:
ssh-keygen -t ed25519 -C "codex-remote"
一路回车即可。默认会生成:
C:\Users\ASUS\.ssh\id_ed25519
C:\Users\ASUS\.ssh\id_ed25519.pub
说明:
id_ed25519是私钥,只放在自己电脑上,不要发给别人;id_ed25519.pub是公钥,可以放到远端服务器。
2)查看并复制本地公钥
在 Windows 本地执行:
type C:\Users\ASUS\.ssh\id_ed25519.pub
复制输出的整行内容。
3)把公钥添加到远端服务器
先登录远端:
ssh user@0.0.0.0
在远端执行:
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
把刚才复制的公钥粘贴进去,保存退出。
然后设置权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
4)回到 Windows 本地测试免密登录
退出远端:
exit
在 Windows 本地测试:
ssh user@0.0.0.0
如果不再要求输入密码,说明 SSH Key 配置成功。
5)可选:把 SSH Key 写入 SSH alias 配置
编辑 Windows 本地文件:
notepad C:\Users\ASUS\.ssh\config
写入或修改为:
Host sm5
HostName 0.0.0.0
User user
Port 22
IdentityFile C:\Users\ASUS\.ssh\id_ed25519
IdentitiesOnly yes
之后可用:
ssh sm5
测试是否能免密登录。
2. 区分本地命令和远端命令
说明
Windows 本地提示符一般是:
C:\Users\ASUS>
远端 Ubuntu 提示符一般是:
user@服务器名:~$
可能出现的问题
在远端 Ubuntu 中执行了 Windows 命令:
notepad $env:USERPROFILE\.ssh\id_ed25519.pub
然后提示:
找不到命令 notepad
解决办法
notepad只能在 Windows 本地使用;- 远端 Linux 编辑文件用:
nano 文件名
例如:
nano ~/.codex/config.toml
3. 配置 SSH 别名 sm5
指令
在 Windows 本地打开 SSH 配置:
notepad C:\Users\ASUS\.ssh\config
写入:
Host sm5
HostName 0.0.0.0
User user
Port 22
如果使用 SSH Key,可写成:
Host sm5
HostName 0.0.0.0
User user
Port 22
IdentityFile C:\Users\ASUS\.ssh\id_ed25519
IdentitiesOnly yes
指令目的
以后可以用:
ssh sm5
代替:
ssh user@0.0.0.0
可能出现的问题
ssh sm5
报错:
Could not resolve hostname sm5
解决办法
检查:
- 文件路径是否是
C:\Users\ASUS\.ssh\config; - 文件名不是
config.txt; HostName、User是否写对;- 保存后重新执行:
ssh sm5
4. 远端服务器是否需要安装 Codex CLI
结论
需要。
原因
Codex Desktop 通过 SSH 连接远端后,需要在远端启动 Codex CLI,所以远端必须有 codex 命令。
5. 检查远端是否已有 Codex CLI
指令
登录远端后执行:
codex --version
或者:
command -v codex
指令目的
检查远端是否安装 Codex CLI,以及命令位置。
可能出现的问题
Command 'codex' not found
解决办法
安装 Codex CLI。
6. 远端安装 Codex CLI
指令
在远端 Ubuntu 执行:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
指令目的
下载并安装 Codex CLI 到当前用户目录。
常见安装位置:
/home/user/.local/bin/codex
安装后测试
codex --version
成功时类似:
codex-cli 0.145.0
7. 配置 API 中转环境变量(可以省略)
指令
远端编辑:
nano ~/.profile
添加:
export MY_RELAY_API_KEY="你的中转API密钥"
刷新:
source ~/.profile
测试:
echo $MY_RELAY_API_KEY
指令目的
让远端 Codex CLI 可以从环境变量中读取 API Key。
注意
不要把真实 API Key 发到聊天、截图、公开仓库中。泄露后应立即去中转后台重置。
8. 配置远端 Codex provider
指令
远端创建配置目录:
mkdir -p ~/.codex
编辑配置文件:
nano ~/.codex/config.toml
写入:
model_provider = "ZZ77"
model = "gpt-5.5"
[model_providers.ZZ77]
name = "ZZ77"
base_url = "https://你的中转地址/v1"
env_key = "MY_RELAY_API_KEY"
wire_api = "responses"
指令目的
告诉 Codex CLI:
- 使用哪个中转地址;
- 使用哪个模型;
- 从哪个环境变量读取 API Key。
9. 修复 Model provider Rkapi not found
可能出现的问题
执行:
codex
报错:
Error loading configuration: Model provider `Rkapi` not found
原因
model_provider 和 [model_providers.xxx] 名字不一致。
例如错误写法:
model_provider = "Rkapi"
[model_providers.rkapi]
Rkapi 和 rkapi 大小写不同,Codex 会认为不是同一个 provider。
解决办法
统一成完全一致的名字,例如都用小写:
model_provider = "rkapi"
[model_providers.rkapi]
name = "Rkapi"
base_url = "https://你的中转地址/v1"
env_key = "MY_RELAY_API_KEY"
wire_api = "responses"
10. 注意中转接口类型
可能出现的问题
Codex 配置无误,但运行时出现 404、接口不存在、模型请求失败等。
原因
Codex 自定义 provider 通常需要中转支持:
/v1/responses
不只是:
/v1/chat/completions
解决办法
向中转平台确认是否支持 OpenAI Responses API。若不支持,Codex CLI 可能无法正常使用该中转。
11. 注意模型名 gpt-5.5
配置
model = "gpt-5.5"
可能出现的问题
报错:
model not found
解决办法
去中转后台查看真实模型 ID,并把配置中的:
model = "gpt-5.5"
改成中转实际支持的模型名。
12. Windows 测试远端 Codex 是否可被非交互 SSH 找到
指令
Windows CMD 执行:
ssh sm5 "command -v codex && codex --version"
指令目的
检查 Codex Desktop 这类远端连接方式是否能找到远端的 codex 命令。
可能出现的问题
没有任何输出。
说明
这通常表示:
- SSH 能连接;
- 但非交互 SSH 环境找不到
codex。
13. 对比登录 shell 和非交互 shell
指令 1:查看非交互 SSH 的 PATH
ssh sm5 "echo PATH=$PATH; command -v codex; codex --version"
如果输出类似:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
bash: codex: command not found
说明默认 PATH 中没有:
/home/user/.local/bin
指令 2:使用登录 shell 测试
ssh sm5 "bash -lc 'command -v codex && codex --version'"
如果输出:
/home/user/.local/bin/codex
codex-cli 0.145.0
说明 Codex 已安装,只是非交互 SSH 找不到。
14. 不推荐方案:全局软链接
指令
sudo ln -sf /home/user/.local/bin/codex /usr/local/bin/codex
指令目的
让所有 shell 都能从 /usr/local/bin 找到 codex。
为什么不推荐
/usr/local/bin 是系统级目录。这样做后,服务器其他用户理论上也能看到这个 codex 命令。
如果已经创建,删除方式
sudo rm -f /usr/local/bin/codex
15. 推荐方案:只对当前用户修复 PATH
指令
远端编辑:
nano ~/.pam_environment
写入:
PATH OVERRIDE=/home/user/.local/bin:/home/user/.codex/bin:/home/user/.npm-global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
MY_RELAY_API_KEY OVERRIDE=你的中转API密钥
设置权限:
chmod 600 ~/.pam_environment
退出并重新连接:
exit
指令目的
让当前用户 user 的非交互 SSH 也能找到:
/home/user/.local/bin/codex
优点
只对当前用户生效,不影响服务器其他成员。
16. 验证 PATH 修复成功
指令
Windows CMD:
ssh sm5 "echo PATH=$PATH; command -v codex && codex --version"
成功表现
PATH=/home/user/.local/bin:/home/user/.codex/bin:/home/user/.npm-global/bin:...
/home/user/.local/bin/codex
codex-cli 0.145.0
结论
远端非交互 SSH 已经可以找到当前用户安装的 Codex CLI。
17. 检查 API Key 是否在非交互 SSH 中可用
不推荐的写法
ssh sm5 "test -n \"$MY_RELAY_API_KEY\" && echo API_KEY=set || echo API_KEY=missing"
可能出现的问题
命令没有输出或卡住。
原因
Windows CMD、SSH、远端 Bash 对引号和 $变量 的处理容易混淆。
推荐写法
不显示真实 Key,只检查是否存在:
ssh sm5 "printenv MY_RELAY_API_KEY >/dev/null && echo API_KEY=set || echo API_KEY=missing"
或者:
ssh sm5 "bash -lc 'printenv MY_RELAY_API_KEY >/dev/null && echo API_KEY=set || echo API_KEY=missing'"
成功表现
API_KEY=set
18. Codex Desktop 中添加远端连接
操作
在 Codex / ChatGPT Desktop 中:
Settings > Connections > SSH
添加或选择:
sm5
选择远端目录,例如:
/home/user/codex_mini
目的
让新对话在远端服务器目录中运行。
19. 新开对话验证是否真的在远端
在新 Codex 对话中发送
请验证你是否正在我的远端服务器 sm5 上工作。只运行检查命令,不要修改文件:
pwd
hostname
whoami
command -v codex
codex --version
ls -la
成功表现
应看到类似:
pwd: /home/user/codex_mini
hostname: sm5-Standard-PC-Q35-ICH9-2009
whoami: user
codex: /home/user/.local/bin/codex
codex-cli 0.145.0
20. 文件读写验证
在 Codex 新对话中发送
请在当前目录创建 codex_remote_check.txt,写入 hostname、whoami、pwd 和当前时间,然后读取该文件内容给我看。
Windows CMD 验证
ssh sm5 "cat /home/user/codex_mini/codex_remote_check.txt"
删除测试文件
ssh sm5 "rm /home/user/codex_mini/codex_remote_check.txt"
目的
确认 Codex 确实能在远端目录读写文件。
最终模板汇总
A. Windows SSH config
文件:
C:\Users\ASUS\.ssh\config
内容:
Host sm5
HostName 0.0.0.0
User user
Port 22
IdentityFile C:\Users\ASUS\.ssh\id_ed25519
IdentitiesOnly yes
如果还没有 SSH Key,可先用:
Host sm5
HostName 0.0.0.0
User user
Port 22
B. 远端 Codex 配置
文件:
~/.codex/config.toml
内容:
model_provider = "rkapi"
model = "gpt-5.5"
[model_providers.rkapi]
name = "Rkapi"
base_url = "https://你的中转地址/v1"
env_key = "MY_RELAY_API_KEY"
wire_api = "responses"
C. 远端用户级环境配置
文件:
~/.pam_environment
内容:
PATH OVERRIDE=/home/user/.local/bin:/home/user/.codex/bin:/home/user/.npm-global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
MY_RELAY_API_KEY OVERRIDE=你的中转API密钥
权限:
chmod 600 ~/.pam_environment
常用排查命令
Windows 本地
ssh sm5
ssh sm5 "command -v codex && codex --version"
ssh sm5 "bash -lc 'command -v codex && codex --version'"
ssh sm5 "echo PATH=$PATH"
ssh sm5 "printenv MY_RELAY_API_KEY >/dev/null && echo API_KEY=set || echo API_KEY=missing"
远端 Ubuntu
command -v codex
codex --version
nano ~/.codex/config.toml
nano ~/.pam_environment
nano ~/.profile
安全注意事项
- 不要公开 API Key;
- 如果 API Key 曾经泄露,立即去中转后台重置;
- 不要把真实 Key 提交到 Git 仓库;
- 建议设置权限:
chmod 600 ~/.pam_environment
chmod 600 ~/.codex/config.toml
- 不推荐把个人 Codex 命令软链接到
/usr/local/bin,除非你接受服务器其他用户也能看到。 - 注意!!!每次换模型只需要修改vim ~/.codex/config.toml即可
更多推荐



所有评论(0)