Codex 远程连接服务器(服务器能访问外网版):把 auth.json 改到 TaoToken 的完整配置 1. 服务器能上网Codex 远程连接为什么还要改 auth.jsonCodex 远程连接服务器这件事很多人卡住的地方不是网络而是认证文件的位置和内容。你手上这台服务器本身能访问外网curl https://www.google.com能通ping也没问题但 Codex 客户端连上去之后还是提示认证失败或者无法访问。这种情况我遇到过好几次最后发现根因基本都落在~/.codex/auth.json这个文件上。先说清楚 Codex 是什么。Codex 是 OpenAI 推出的编码代理工具有桌面客户端也有 CLI 版本。它能在本地跑也能通过远程连接的方式把任务发到服务器上执行。适合谁用适合那些本地机器性能一般、但有一台能上网的 Linux 服务器的人。你把 Codex 的服务端装在服务器上桌面端通过远程连接去调用这样编译、跑测试、拉依赖这些重活都在服务器上完成本地只负责交互。那为什么标题要强调「服务器能访问外网版」因为如果服务器不能上网你得先解决网络出口问题那是另一个话题。这里的前提是服务器已经能正常访问外部网络我们只需要把 Codex 的认证端点从默认的 OpenAI 官方地址改成 TaoToken 的地址让请求走 TaoToken 的 API 网关。核心改动就一个文件auth.json。这个文件在服务器上的路径通常是~/.codex/auth.json。它决定了 Codex 用哪个 endpoint、用哪个 key 去发请求。默认情况下它指向 OpenAI 官方但你可以把它改成 TaoToken 的 Base URL这样所有请求都会经过 TaoToken 转发。我试过直接在服务器上改这个文件改完之后 Codex 的远程连接就能正常认证了。下面我把完整流程拆开讲包括服务端安装、auth.json 的写法、最小验证请求以及几个常见的报错怎么排查。2. TaoToken 前置准备Base URL、API Key 和模型 ID 三件套在改auth.json之前你需要先拿到三样东西Base URL、API Key、Model ID。这三个缺一不可后面配置文件里都要填。Base URL 指向 TaoToken 的 API 地址。注意API 调用地址和官网地址是分开的官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 地址https://taotoken.net/apiAPI 地址后面不加任何 UTM 参数直接就是https://taotoken.net/api。你在auth.json里填的 Base URL 就是这个。API Key 需要你去控制台创建。打开 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 登录之后找到 API Keys 页面新建一个 key。创建的时候注意权限范围如果你只是用来做 Codex 的编码任务选默认的对话权限就够了。创建完把 key 复制下来格式一般是sk-开头的一串字符。这个 key 只显示一次丢了就得重新建。Model ID 是你打算让 Codex 调用的模型标识。TaoToken 支持多种模型你在模型列表里能看到具体的 ID。Codex 场景下一般用编码能力强的模型具体选哪个看你自己的需求。把 Model ID 记下来后面配置里要写。如果你还没决定用哪个模型可以先去模型对话页面看看有哪些可选https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。页面上会列出当前可用的模型和对应的 ID。拿到这三样之后建议先在本地用 curl 测一下 key 能不能用避免后面改完配置文件才发现 key 有问题。测试命令很简单curl -s https://taotoken.net/api/v1/models \ -H Authorization: Bearer sk-你的key | head -c 500如果返回了模型列表的 JSON说明 key 和 Base URL 都没问题。如果返回 401那就是 key 不对或者没生效。这一步先确认好后面排障会省很多事。另外提一句如果你打算长期在服务器上跑 Codex 做编码任务可以考虑用 Coding Plan额度更划算。入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。不过这是后话先把连接跑通再说。3. 可复制配置auth.json 改到 TaoToken 的完整写法这一节是重点。Codex 在服务器上的认证文件路径是~/.codex/auth.json。如果这个目录不存在先创建mkdir -p ~/.codex然后编辑auth.json。这个文件的格式是 JSON内容结构如下。你可以直接复制下面这段把占位符替换成你自己的值{ OPENAI_API_KEY: sk-你的TaoToken密钥, OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_MODEL: 你的模型ID, OPENAI_ORG_ID: , OPENAI_PROJECT_ID: }几个关键字段说明一下。OPENAI_API_KEY填你在 TaoToken 控制台创建的 key。OPENAI_BASE_URL填https://taotoken.net/api注意结尾不要多加斜杠也不要写成/v1Codex 会自己拼接路径。OPENAI_MODEL填你要用的模型 ID。OPENAI_ORG_ID和OPENAI_PROJECT_ID留空就行TaoToken 不需要这两个。如果你用的是 Codex CLI 的较新版本它可能还会读一个config.toml文件。路径在~/.codex/config.toml。这个文件里可以配模型和 provider。写法如下model 你的模型ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key OPENAI_API_KEY注意env_key这里写的是环境变量名不是 key 本身。你需要在 shell 里 export 这个变量或者在auth.json里同时保留 key。两种方式选一种就行我一般两个都配上避免某个版本读不到。配好之后把环境变量加到~/.bashrc里这样每次登录服务器都自动生效echo export OPENAI_API_KEYsk-你的TaoToken密钥 ~/.bashrc echo export OPENAI_BASE_URLhttps://taotoken.net/api ~/.bashrc source ~/.bashrc如果你用的是 zsh把~/.bashrc换成~/.zshrc。还有一个容易忽略的点文件权限。auth.json里存了 key权限要收紧chmod 600 ~/.codex/auth.json chmod 700 ~/.codex这样只有当前用户能读写其他用户看不到。配置改完之后重启 Codex 服务端进程。如果你是用 systemd 管理的systemctl --user restart codex如果是手动跑的kill 掉重新启动就行。4. 验证请求用一次最小调用确认连接生效配置文件改完不代表就通了得实际发一次请求验证。最直接的方式是用 Codex CLI 跑一个最小任务。先确认 Codex 版本codex --version如果这个命令报command not found说明 Codex 服务端没装好或者 PATH 没配。回到安装步骤检查~/.local/bin是否在 PATH 里。版本正常的话跑一个最简单的对话请求codex exec print hello --model 你的模型ID或者用交互模式codex进入交互界面后输入一句say hi看它能不能正常返回。如果返回了内容说明 Base URL、Key、Model 三件套都生效了。另一种验证方式是用 curl 直接打 TaoToken 的 chat completions 接口确认服务端本身能通curl -s https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -d { model: 你的模型ID, messages: [{role: user, content: ping}], max_tokens: 10 }如果返回的 JSON 里有choices字段并且 content 里有内容说明整条链路是通的。这一步能过Codex 那边基本不会有问题。回到 Codex 桌面端的远程连接界面填入服务器信息选择 API 密钥认证方式把 TaoToken 的 key 填进去。连接成功后你就能在桌面端操作服务器上的 Codex 了。实测下来只要auth.json里的 Base URL 写对了远程连接认证这一步就不会卡。很多人失败是因为 Base URL 写成了官网地址而不是 API 地址或者结尾多了/v1导致路径拼接错误。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节列几个我实际遇到过的报错以及对应的排查方向。401 Unauthorized这是最常见的。原因通常是 key 不对、key 没生效、或者 Base URL 写错了。排查步骤先用 curl 直接测 key确认 key 本身能用。然后检查auth.json里的OPENAI_API_KEY有没有多余空格或换行。再检查OPENAI_BASE_URL是不是https://taotoken.net/api不要写成官网地址。如果 curl 能通但 Codex 报 401那可能是 Codex 读了缓存或者旧的环境变量。检查~/.bashrc里有没有旧的OPENAI_API_KEY覆盖了新的。用env | grep OPENAI看一下当前 shell 里的实际值。local proxy failed这个报错通常出现在 Codex 桌面端连接远程服务器的时候。意思是本地代理层连不上服务器。排查方向确认服务器的 SSH 端口是通的ssh userserver能正常登录。确认服务器上的 Codex 服务端进程在跑ps aux | grep codex看一下。如果服务端没起来远程连接自然失败。还有一种情况是服务器防火墙拦了 Codex 用的端口。Codex 远程连接默认走 SSH 隧道如果你改了 SSH 端口桌面端配置里也要对应改。reading choices 报错这个报错一般是响应格式不对。Codex 期望返回的 JSON 里有choices数组但实际拿到的不是标准格式。原因可能是 Base URL 指向了一个不兼容 OpenAI 接口的地址或者模型 ID 写错了导致返回了错误信息。排查用 curl 打一次 chat completions看返回的 JSON 结构。如果返回的是{error: ...}那就是 key 或模型的问题。如果返回正常但 Codex 还是报 reading choices检查 Codex 版本是不是太旧旧版本对某些响应字段的解析可能不兼容。升级到最新版试试。OAuth 认证失败Codex 桌面端默认可能走 OAuth 流程但你要用 API 密钥认证。在连接配置界面里认证方式要选 API Key不要选 OAuth。如果界面里只有 OAuth 选项说明 Codex 版本不对或者远程连接功能还是 beta 状态没开放 API Key 选项。这种情况下升级 Codex 到最新版或者在服务端的auth.json里强制指定 key让服务端忽略客户端的 OAuth 请求。还有一个坑如果你之前用 OAuth 登录过Codex 可能缓存了 token。清掉缓存目录~/.codex/下的 token 相关文件重新用 API Key 认证。Codex 服务端安装报错如果你在服务器上装 Codex 服务端时遇到GLIBC版本不兼容用 musl 版本的二进制包。下载地址是https://github.com/openai/codex/releases/latest/download/codex-x86_64-unknown-linux-musl.tar.gz。解压后放到~/.local/bin加执行权限配好 PATH。mkdir -p ~/.local/bin tar -xzf codex-x86_64-unknown-linux-musl.tar.gz -C ~/.local/bin/ chmod x ~/.local/bin/codex echo export PATH$HOME/.local/bin:$PATH ~/.bashrc source ~/.bashrc codex --version版本能打印出来就说明安装成功了。6. 长期跑 Codex 远程编码接入文档和 Key 管理怎么配合连接跑通之后日常使用中还有几个点值得注意。Key 的轮换和管理。TaoToken 控制台的 API Keys 页面可以创建多个 key建议给不同的服务器或不同的用途分配不同的 key。这样某个 key 泄露了你只需要删掉那一个不影响其他服务。创建新 key 的入口在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入文档里有更详细的参数说明和接口列表遇到不确定的字段可以先查文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。文档里会列出当前支持的模型、请求格式、返回结构以及一些常见问题的处理方式。如果你在服务器上跑的是 Claude Code 类的工具接入方式类似也是改 Base URL 和 Key。Claude Code 的配置入口在 https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有对应的配置说明。长期编码任务建议用 Coding Plan额度和并发更合适。入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后说一个实际经验服务器上的auth.json改完之后如果你同时用桌面端和 CLI两边的配置要一致。桌面端的远程连接配置里填的 key 和服务端auth.json里的 key 可以是同一个也可以是不同的 key但 Base URL 必须都指向https://taotoken.net/api。我见过有人桌面端填了 TaoToken 的 key但服务端auth.json还是旧的 OpenAI 地址结果请求发到官方去了自然认证失败。两边对齐问题就少很多。