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

解决办法

检查:

  1. 文件路径是否是 C:\Users\ASUS\.ssh\config
  2. 文件名不是 config.txt
  3. HostNameUser 是否写对;
  4. 保存后重新执行:
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:

  1. 使用哪个中转地址;
  2. 使用哪个模型;
  3. 从哪个环境变量读取 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]

Rkapirkapi 大小写不同,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 命令。

可能出现的问题

没有任何输出。

说明

这通常表示:

  1. SSH 能连接;
  2. 但非交互 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

安全注意事项

  1. 不要公开 API Key;
  2. 如果 API Key 曾经泄露,立即去中转后台重置;
  3. 不要把真实 Key 提交到 Git 仓库;
  4. 建议设置权限:
chmod 600 ~/.pam_environment
chmod 600 ~/.codex/config.toml
  1. 不推荐把个人 Codex 命令软链接到 /usr/local/bin,除非你接受服务器其他用户也能看到。
  2. 注意!!!每次换模型只需要修改vim ~/.codex/config.toml即可
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐