Codex 服务器端使用指南
ChatGPT 登录缓存迁移方案

适用于:Windows 本地 + Xshell/Linux 服务器 + iSeg 项目

版本:2026-05-07 整理版

核心结论:服务器上的 Codex 已经可以通过复制本地 ChatGPT 登录缓存 auth.json 的方式登录。最终验证结果为:auth_mode = chatgpt,codex login status = Logged in using ChatGPT。

安全提醒:auth.json 等同于登录凭据。不要发给任何人、不要截图、不要提交到 Git、不要放进项目目录。只应存放在可信任机器的 ~/.codex/auth.json。

目录

1. 为什么不用 API,而改用 ChatGPT 登录缓存

2. 字段说明:IP、端口、路径、代理分别是什么

3. 第一次要做的完整流程

4. 后续每次重新打开服务器要做什么

5. 推荐日常启动脚本

6. 遇到过的所有问题与解决方法

7. 安全与使用建议

8. 官方参考文档

1. 为什么不用 API,而改用 ChatGPT 登录缓存

背景:服务器上最开始尝试使用 OpenAI API key 登录 Codex,但出现了 Quota exceeded。这个错误不是 iSeg 或 Codex 安装失败,而是 OpenAI Platform API 账户没有可用额度/余额,或者项目限额不足。ChatGPT Plus 与 OpenAI Platform API 是两套不同的计费体系;用 API key 登录会走 Platform API 计费,不会自动使用 ChatGPT Plus 订阅。

因此改用的方案:在本地 Windows 电脑上用 ChatGPT 账号登录 Codex CLI,并强制把登录凭据保存为文件 auth.json;然后把这个文件复制到服务器 ~/.codex/auth.json。服务器上的 Codex CLI 就能复用这份 ChatGPT 登录缓存。

为什么好用:服务器通常没有浏览器,device-auth 又可能被网络或权限拦住。复制 auth.json 可以绕过服务器浏览器登录和 device code 登录失败的问题。只要服务器能通过代理访问 OpenAI 服务,Codex 就可以在 Xshell 里作为代码助手使用。

为什么可以避免额外买 API token:这个方案用的是 ChatGPT 登录缓存,不是 API key。也就是说,Codex 不再走 Platform API key 的额度/计费路径,而是走 ChatGPT 登录体系。

实现机制:Codex CLI 登录后会在本地缓存登录信息。官方文档说明缓存可能位于 ~/.codex/auth.json 或系统凭据存储;通过设置 cli_auth_credentials_store = "file" 可以强制存到 auth.json。CLI 和 IDE 扩展共享缓存;ChatGPT 登录会包含可刷新 token,使用中通常可自动刷新。

2. 字段说明:IP、端口、路径、代理分别是什么

下面所有命令里的“汉字字段”都需要替换成你自己的值。表格最后一列给出了本次排查中你的实际示例。

字段/占位符

什么意思

去哪里查

在命令里怎么写

本地用户名

Windows 当前用户的用户名,用于定位 C:\Users\用户名。

PowerShell 执行:echo $env:USERPROFILE

%USERPROFILE% 等价于 C:\Users\17310

本地 Codex 配置目录

本地 Windows 上保存 Codex 配置和 auth.json 的目录。

PowerShell:dir $env:USERPROFILE\.codex

$env:USERPROFILE\.codex

服务器用户名

登录服务器时使用的 Linux 用户名。

看 Xshell 登录信息或命令行提示符。

username@服务器IP

服务器 IP

服务器的网络地址。

Xshell 会话属性里的 Host/主机。

username@服务器IP

SSH 端口

scp/ssh 连接服务器使用的端口。默认常见为 22。

Xshell 会话属性里的 Port/端口。

scp -P 1222 ...

服务器 Codex 环境

安装 Node/Codex CLI 的 conda 环境名。

服务器执行 conda env list。

conda activate codex-node

服务器代理地址

服务器本机可用的代理监听地址。127.0.0.1 表示服务器自己。

服务器执行 curl cip.cc 检查代理出口。

export HTTPS_PROXY=http://127.0.0.1:2333

服务器代理端口

代理服务监听的端口。你这次用 2333。

问服务器代理配置,或看已有 export 设置。

http://127.0.0.1:2333

本地 Node 安装路径

Windows 上 node.exe 和 npm.cmd 所在目录。

你安装 Node 时选择的路径;或 Test-Path 检查。

$env:Path += ";E:\software\nodejs;$env:APPDATA\npm"

3. 第一次要做的完整流程

本节是第一次从零配置时要做的。每一步都按“在哪个平台、做什么、命令、正常结果、失败看哪个问题”排列。

3.1 本地 Windows:准备 Codex CLI 并生成 ChatGPT auth.json

平台/位置

做什么

命令

正常结果/成功标志

失败时看

Windows PowerShell

确认 Node/npm 可用。

node -v
npm -v

正常显示版本号,例如 node: v24.15.0;npm 显示版本号。

失败看问题 5、6、7

Windows PowerShell

如果 Node 装在自定义目录,临时加入 PATH。

$env:Path += ";本地Node安装路径;$env:APPDATA\npm"
node -v
npm.cmd -v

node 与 npm.cmd 都显示版本号。

失败看问题 6、7

Windows PowerShell

安装 Codex CLI,包含 Windows 可选依赖。

npm.cmd install -g @openai/codex@latest --include=optional
codex.cmd --version

显示 codex-cli 版本,例如 codex-cli 0.128.0。

失败看问题 7、8

Windows PowerShell

强制 Codex 把登录凭据写到文件 auth.json。

mkdir $env:USERPROFILE\.codex -Force
notepad $env:USERPROFILE\.codex\config.toml

Notepad 打开 config.toml。写入 cli_auth_credentials_store = "file" 并保存。

失败看问题 15

Windows Notepad

写入配置。

cli_auth_credentials_store = "file"

保存后关闭。

失败看问题 15

Windows PowerShell

用 ChatGPT 登录 Codex。

codex.cmd login

浏览器打开登录页,登录成功后返回终端。

失败看问题 1、5、8

Windows PowerShell

验证 auth.json 已生成且是 ChatGPT 登录。

dir $env:USERPROFILE\.codex\auth.json
python -c "import json, os; p=os.path.expandvars(r'%USERPROFILE%\.codex\auth.json'); print(json.load(open(p, encoding='utf-8')).get('auth_mode'))"

第一条能看到 auth.json;第二条输出 chatgpt。

失败看问题 15、16

本地 Windows 完整示例命令

# 你的本地 Windows 示例:
$env:Path += ";E:\software\nodejs;$env:APPDATA\npm"
node -v
npm.cmd -v
npm.cmd install -g @openai/codex@latest --include=optional
codex.cmd --version

mkdir $env:USERPROFILE\.codex -Force
notepad $env:USERPROFILE\.codex\config.toml
# config.toml 中写入:cli_auth_credentials_store = "file"

codex.cmd login
python -c "import json, os; p=os.path.expandvars(r'%USERPROFILE%\.codex\auth.json'); print(json.load(open(p, encoding='utf-8')).get('auth_mode'))"

3.2 本地 Windows → 服务器:复制 auth.json

平台/位置

做什么

命令

正常结果/成功标志

失败时看

Xshell/服务器

先确保服务器上有 ~/.codex 目录。

mkdir -p ~/.codex
chmod 700 ~/.codex

无输出,直接回到命令提示符。

失败看问题 15

Windows PowerShell

用 scp 复制本地 auth.json 到服务器。注意端口用 -P。

scp -P 服务器SSH端口 "$env:USERPROFILE\.codex\auth.json" "服务器用户名@服务器IP:~/.codex/auth.json"

提示输入服务器密码;随后出现 auth.json 100%。

失败看问题 9、10

Xshell/服务器

设置服务器上 auth.json 权限。

chmod 600 ~/.codex/auth.json

无输出,直接回到命令提示符。

失败看问题 15

Xshell/服务器

确认服务器收到的是 ChatGPT 登录缓存。

python -c "import json, os; print(json.load(open(os.path.expanduser('~/.codex/auth.json'))).get('auth_mode'))"

输出 chatgpt。

失败看问题 15、16

复制 auth.json 的成功示例

# 你的实际成功命令:
scp -P 1222 "$env:USERPROFILE\.codex\auth.json" "username@ip:~/.codex/auth.json"

# 正常输出示例:
# username@ip's password:
# auth.json 100% 4385 713.7KB/s 00:00

3.3 服务器 Linux/Xshell:验证 Codex 已用 ChatGPT 登录

平台/位置

做什么

命令

正常结果/成功标志

失败时看

Xshell/服务器

激活安装 Codex 的 conda 环境。

conda activate codex-node

命令行前缀变为 (codex-node)。

失败看问题 11

Xshell/服务器

清掉 API key 相关环境变量,避免仍走 API 计费。

unset OPENAI_API_KEY
unset CODEX_API_KEY

无输出,直接回到命令提示符。

失败看问题 16

Xshell/服务器

检查登录状态。

codex login status

输出 Logged in using ChatGPT。

失败看问题 16、17

最终登录状态成功标志

# 你已经看到的正常结果:
chatgpt
Logged in using ChatGPT

3.4 服务器 Linux/Xshell:启动 Codex 进行聊天/代码工作

平台/位置

做什么

命令

正常结果/成功标志

失败时看

Xshell/服务器

进入 iSeg 项目目录。

cd 服务器项目路径

命令行路径变为 ~/iSeg 或 pwd 显示项目目录。

失败看问题 11

Xshell/服务器

设置服务器代理。大小写都设置,避免 Node/Codex 不认。

export HTTP_PROXY=http://代理地址:代理端口
export HTTPS_PROXY=http://代理地址:代理端口
export ALL_PROXY=http://代理地址:代理端口
export http_proxy=http://代理地址:代理端口
export https_proxy=http://代理地址:代理端口
export all_proxy=http://代理地址:代理端口

无输出。随后 curl -I https://api.openai.com/v1/models 应返回 HTTP/2 401。

失败看问题 3、17

Xshell/服务器

启动 Codex,允许在当前工作区读写,敏感操作需审批。

codex --sandbox workspace-write --ask-for-approval on-request

进入 Codex 交互界面,可以输入中文任务;不再提示 Quota exceeded。

失败看问题 2、3、16、17

服务器启动 Codex 示例

# 你的服务器启动示例:
cd ~/iSeg

export HTTP_PROXY=http://127.0.0.1:2333
export HTTPS_PROXY=http://127.0.0.1:2333
export ALL_PROXY=http://127.0.0.1:2333
export http_proxy=http://127.0.0.1:2333
export https_proxy=http://127.0.0.1:2333
export all_proxy=http://127.0.0.1:2333

codex --sandbox workspace-write --ask-for-approval on-request

第一次进入 Codex 后建议输入:先不要修改任何代码。请读取当前项目 README 和主要脚本,告诉我如何使用预训练 encoder/decoder 运行 demo。不要运行训练,不要删除文件。

4. 后续每次重新打开服务器要做什么

auth.json 已经复制成功后,后续通常不需要再从 Windows 复制。每次重新开 Xshell,主要做:激活环境、进入项目、设置代理、启动 Codex。

平台/位置

做什么

命令

正常结果/成功标志

失败时看

Xshell/服务器

激活 Codex 所在环境。

conda activate codex-node

前缀变成 (codex-node)。

失败看问题 11

Xshell/服务器

进入项目目录。

cd ~/iSeg

命令行路径显示 ~/iSeg。

失败看问题 11

Xshell/服务器

设置代理。

export HTTP_PROXY=http://127.0.0.1:2333
export HTTPS_PROXY=http://127.0.0.1:2333
export ALL_PROXY=http://127.0.0.1:2333
export http_proxy=http://127.0.0.1:2333
export https_proxy=http://127.0.0.1:2333
export all_proxy=http://127.0.0.1:2333

无输出。curl 测试 api.openai.com/v1/models 返回 401。

失败看问题 3、17

Xshell/服务器

确认仍是 ChatGPT 登录。

unset OPENAI_API_KEY
unset CODEX_API_KEY
codex login status

输出 Logged in using ChatGPT。

失败看问题 16

Xshell/服务器

启动 Codex。

codex --sandbox workspace-write --ask-for-approval on-request

进入 Codex 聊天/代码界面。

失败看问题 16、17

5. 推荐日常启动脚本

用途:把“激活环境、进入项目、设置代理、启动 Codex”写成一个脚本,以后只要执行一个命令。

正常结果:执行 bash ~/start_codex_iseg.sh 后进入 Codex 交互界面。

服务器上第一次创建启动脚本

cat > ~/start_codex_iseg.sh <<'EOF'
#!/usr/bin/env bash
source ~/miniconda3/etc/profile.d/conda.sh 2>/dev/null || source ~/anaconda3/etc/profile.d/conda.sh
conda activate codex-node
cd /home/username

export HTTP_PROXY=http://127.0.0.1:2333
export HTTPS_PROXY=http://127.0.0.1:2333
export ALL_PROXY=http://127.0.0.1:2333
export http_proxy=http://127.0.0.1:2333
export https_proxy=http://127.0.0.1:2333
export all_proxy=http://127.0.0.1:2333

unset OPENAI_API_KEY
unset CODEX_API_KEY

codex --sandbox workspace-write --ask-for-approval on-request
EOF

chmod +x ~/start_codex_iseg.sh

后续使用

# 后续每次打开 Xshell
bash ~/start_codex_iseg.sh

6. 遇到过的所有问题与解决方法

如果前面流程表某一步失败,就按“失败时看”的问题编号跳到这里。

问题 1:PyCharm / JetBrains AI Assistant 一直转圈或 Reconnecting

现象:PyCharm 里 AI Assistant/Codex 一直转圈,或出现 Reconnecting、timeout waiting for child process to exit。

原因:本地 Codex 子进程、JetBrains 插件、代理/登录缓存之间没有稳定连上。

解决:先停止当前线程,重启 PyCharm;必要时用 Clean Up Codex Installation 清理;确认项目不要放在 WSL;给 PyCharm 配 HTTP Proxy。若插件继续卡,改用 Codex CLI。

正常结果:CLI 或插件能正常回答“读取 README”这种只读任务。

问题 2:服务器 codex login --device-auth 失败

现象:device-auth 报 403 Forbidden,或 error sending request for https://auth.openai.com/api/accounts/deviceauth/usercode。

原因:服务器上的 ChatGPT OAuth/device code 认证链路不可用,可能被网络、IP、权限或服务策略拦住。

解决:不要继续硬试 device-auth。改用本方案:本地 ChatGPT 登录生成 auth.json,复制到服务器 ~/.codex/auth.json。

正常结果:服务器 codex login status 显示 Logged in using ChatGPT。

问题 3:服务器访问 api.openai.com 超时

现象:curl -I https://api.openai.com/v1/models 返回 Connection timed out。

原因:服务器不走你本地电脑的 VPN。服务器必须自己能通过代理访问 OpenAI。

解决:设置服务器代理:export HTTP_PROXY/HTTPS_PROXY/ALL_PROXY。你的例子是 http://127.0.0.1:2333。

正常结果:curl -I https://api.openai.com/v1/models 返回 HTTP/2 401。401 是正常的,代表网络通但没带 API key。

问题 4:Quota exceeded

现象:Codex 里输入后提示 Quota exceeded. Check your plan and billing details。

原因:当时使用的是 API key 登录,走 OpenAI Platform API 额度;账户没有可用 API credits 或限额不足。

解决:放弃 API key 登录,改用 ChatGPT 登录缓存 auth.json。复制后 unset OPENAI_API_KEY 和 CODEX_API_KEY。

正常结果:codex login status 显示 Logged in using ChatGPT,启动后不再提示 Quota exceeded。

问题 5:Windows PowerShell 识别不了 node/npm/codex

现象:node、npm 或 codex 报“无法将某项识别为 cmdlet”。

原因:未安装 Node/Codex CLI,或安装目录未加入 PATH。

解决:安装 Node.js;若装在自定义路径,把本地 Node 路径和 %APPDATA%\npm 加到 PATH。

正常结果:node -v、npm.cmd -v、codex.cmd --version 都显示版本号。

问题 6:Node 装在 E:\software\nodejs 后仍找不到

现象:node 命令找不到,但实际 Node 装在 E:\software\nodejs。

原因:PATH 没包含 E:\software\nodejs。

解决:临时执行:$env:Path += ";E:\software\nodejs;$env:APPDATA\npm"。之后可永久加入用户 PATH。

正常结果:node -v 输出 v24.15.0 或类似版本。

问题 7:npm.ps1 / codex.ps1 被 PowerShell 执行策略拦住

现象:npm -v 或 codex 报“禁止运行脚本”。

原因:PowerShell 默认执行策略不允许运行 npm.ps1/codex.ps1。

解决:直接用 npm.cmd 和 codex.cmd;或执行 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned。

正常结果:npm.cmd -v 和 codex.cmd --version 正常输出。

问题 8:Missing optional dependency @openai/codex-win32-x64

现象:codex.cmd login 报 Missing optional dependency @openai/codex-win32-x64。

原因:Windows 平台对应的 Codex 可选二进制依赖没有装下来。

解决:重新安装:npm.cmd uninstall -g @openai/codex @openai/codex-win32-x64;npm.cmd cache clean --force;npm.cmd install -g @openai/codex@latest --include=optional。

正常结果:codex.cmd --version 输出 codex-cli 版本。

问题 9:scp: Could not resolve hostname

现象:scp 报 Could not resolve hostname x.x.x.x.。

原因:IP 后面多打了一个点,或主机名写错。

解决:去掉 IP 后的点。正确:username@x.x.x.x:~/.codex/auth.json。

正常结果:进入输密码阶段或出现 auth.json 100%。

问题 10:scp 连接 22 端口超时

现象:scp 默认连接 port 22 timed out。

原因:你的 Xshell 不是用 22 端口,而是 1222;scp 默认端口不对。

解决:使用 -P 指定端口:scp -P 1222 ...。

正常结果:出现 auth.json 100% 即成功。

问题 11:服务器 base 环境里 codex: command not found

现象:在 (base) 下运行 codex 报 command not found。

原因:Codex 安装在 conda 环境 codex-node 里,base 环境找不到。

解决:先执行 conda activate codex-node,再运行 codex。

正常结果:命令行前缀显示 (codex-node),codex --version 正常。

问题 12:API key、ChatGPT 密码、token 的区别

现象:不确定 OpenAI key 是不是密码;也不清楚 token 是什么。

原因:API key 是 OpenAI Platform 的接口密钥,不是 ChatGPT 密码;token 是模型计费/计算的文本单位;auth.json 里的 token 是登录凭据。

解决:不要把 ChatGPT 密码/API key/auth.json 混用。本方案只需要 auth.json,不需要购买 API token。

正常结果:auth_mode 输出 chatgpt,表示走 ChatGPT 登录缓存。

问题 13:PowerShell 和 CMD 不习惯/混淆

现象:PowerShell 变量写法 $env:USERPROFILE;CMD 写法 %USERPROFILE%。

原因:两者是不同 shell:PowerShell 更适合脚本和对象处理,CMD 更传统简单。

解决:如果用 PowerShell,就按 $env:...;如果用 CMD,就改成 %...%。比如 scp 命令在 CMD 中用 %USERPROFILE%。

正常结果:命令能找到本地 auth.json 并成功 scp。

问题 14:Node 安装器安装 Chocolatey / Visual Studio Build Tools 失败

现象:蓝色窗口显示 Chocolatey、Visual Studio Build Tools、Failed to download channels file。

原因:Node 安装器可选的 native modules 编译工具链安装失败,不影响 Codex CLI 核心安装。

解决:关闭该工具链窗口;重新打开 PowerShell 测 node -v/npm.cmd -v。重新安装 Node 时不要勾 Automatically install necessary tools。

正常结果:node -v 和 npm.cmd -v 正常输出即可继续。

问题 15:auth.json 没生成或不是 chatgpt

现象:dir auth.json 找不到;或 auth_mode 不是 chatgpt。

原因:本地 Codex 没用文件存储,或者之前用 API key 登录过。

解决:在本地 config.toml 写 cli_auth_credentials_store = "file";然后 codex.cmd login;必要时 codex logout 后重新登录 ChatGPT。

正常结果:python 读取 auth_mode 输出 chatgpt。

问题 16:服务器复制了 auth.json 但仍像 API key 或 Not logged in

现象:codex login status 不是 Logged in using ChatGPT,或仍 Quota exceeded。

原因:服务器还保留 API key 环境变量,或 auth.json 权限/路径不对。

解决:执行 chmod 600 ~/.codex/auth.json;unset OPENAI_API_KEY;unset CODEX_API_KEY;确认 ~/.codex/auth.json 的 auth_mode 是 chatgpt。

正常结果:codex login status 显示 Logged in using ChatGPT。

问题 17:服务器代理设置后 Codex 仍连不上

现象:curl cip.cc 可显示代理 IP,但 Codex 仍卡;或 curl api 不是 401。

原因:可能只设置了小写代理,或 Codex/Node 不识别;也可能代理端口不对。

解决:大小写代理变量都设置:HTTP_PROXY、HTTPS_PROXY、ALL_PROXY、http_proxy、https_proxy、all_proxy。确认端口是服务器本机代理端口。

正常结果:curl -I https://api.openai.com/v1/models 返回 HTTP/2 401。

7. 安全与使用建议

auth.json 等同于登录凭据。只复制到可信服务器,不要通过聊天、截图、邮件、Git 仓库传播。

不要在服务器 ~/.bashrc 里写 API key。本方案不需要 API key。

进入 Codex 前建议使用 workspace-write + on-request,而不是危险的全权限模式。

第一次让 Codex 处理 iSeg 项目时,先用“只读分析”任务:不要修改代码、不要运行训练、不要删除文件。

训练类长任务建议自己用 tmux 跑;Codex 负责读代码、改脚本、解释报错,不建议让它直接长期占着训练进程。

每次让 Codex 改代码前,最好先 git status,并在关键节点 commit,便于回滚。

推荐提示词

# 推荐给服务器 Codex 的第一条指令:
先不要修改任何代码。请读取当前项目 README 和主要脚本,告诉我如何使用预训练 encoder/decoder 运行 demo。不要运行训练,不要删除文件。

# 如果要让它改文件,先让它列计划:
请先给出你准备修改的文件、修改原因和预期效果。等我确认后再改。

8. 官方参考文档

Codex CLI:安装、运行、终端使用:https://developers.openai.com/codex/cli

Codex Authentication:ChatGPT/API key 登录、auth.json 缓存、凭据存储:https://developers.openai.com/codex/auth

Codex CI/CD auth:在可信机器上生成 auth.json 并复制到远程机器:https://developers.openai.com/codex/auth/ci-cd-auth

Codex Agent approvals & security:workspace-write、read-only、approval 设置:https://developers.openai.com/codex/agent-approvals-security

Codex CLI reference:login/status/sandbox 等命令说明:https://developers.openai.com/codex/cli/reference

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐