- CLI
- 0.2.17
- 预览 ref
- a2c45c8
简要回答
codex login 会在机器上启动一个小型回调服务器,并等待浏览器跳转回 localhost。在无头服务器上,那个浏览器在别处。按建议的尝试顺序,你的选择有:
- 设备码:
codex login --device-auth。在任意设备上打开链接,输入一次性代码即可。可能需要先在 ChatGPT 安全设置中打开一个开关。 - SSH 隧道: 从笔记本转发 1455 端口,然后运行
codex login并完成常规的浏览器流程。 - 复制
auth.json: 在有浏览器的电脑上登录,然后把~/.codex/auth.json复制到服务器。 - API 密钥: 适用于脚本和 CI,反正你需要的就是按 token 计费。
用 codex login status 检查结果。
问题
一种常见配置:Codex 运行在一台小型 Linux 服务器上,这样笔记本睡眠时长任务也能继续。第一次在那里运行 codex login 会打印一个 URL。你在笔记本上打开它并登录,最后一次跳转落在笔记本的 localhost:1455 上。那里什么都没有在监听,于是登录石沉大海。
只要知道哪条路径适合你的账号,解决起来很简单。麻烦的是,便捷的设备码,在某些账号上默认关闭,需要先改设置。
方法 1:用 codex login --device-auth 登录 Codex
在服务器上:
codex login --device-authCodex 会打印一个链接和一次性代码。在笔记本或手机的浏览器中打开链接,登录 ChatGPT,输入代码。终端会自行完成。不需要任何东西回连服务器,所以在 NAT 后面和容器中都能用。
需要知道的:
- 开关。 设备码登录可能需要在 ChatGPT 安全设置中启用,或由管理员在工作区设置中启用。如果命令立刻失败,先检查这里。
- 代码有效期很短。 如果中途分心了,重新开始,不要重复使用旧代码。
- 只输入你自己的终端打印的代码。 设备码会让请求它的那个终端登录。别人发给你的代码,是让他们的电脑登录你账号的请求。
方法 2:通过 SSH 隧道转发 Codex 登录回调
如果设备码被关闭且你无法更改,就保留常规浏览器流程,用 SSH 承载回调。在笔记本上:
ssh -L 1455:localhost:1455 you@server在这个 SSH 会话中运行 codex login,在笔记本浏览器中打开打印出的 URL。当登录跳转到 localhost:1455 时,隧道会把它送到服务器上的 Codex 进程。
如果失败:
- 确认笔记本上没有其他程序占用 1455 端口。
- 开始新登录前,先结束服务器上旧的
codex login进程。残留的进程可能占着端口。 codex login会在 Codex 日志目录中写入codex-login.log文件。当浏览器步骤和终端结果不一致时,读一下它。
方法 3:从有浏览器的电脑复制 Codex 的 auth.json
在笔记本上用 codex login 登录,然后复制凭据文件:
scp ~/.codex/auth.json you@server:~/.codex/auth.jsonOpenAI 把这作为备用方法,对于经常重建的机器很方便。请像对待密码一样对待这个文件。谁持有它,谁就能登录你的 ChatGPT 账号。
如果你的笔记本把 Codex 凭据存在系统密钥环而不是 auth.json 中,就没有文件可复制。OpenAI 的文档说明了如何用 cli_auth_credentials_store 切换为文件存储。
方法 4:脚本和 CI 使用 OpenAI API 密钥
printenv OPENAI_API_KEY | codex login --with-api-keyAPI 密钥认证通过你的 OpenAI Platform 账号按标准 API 价格计费,与 ChatGPT 订阅分开。OpenAI 推荐将其用于 CI 任务等程序化工作流,而且部分 ChatGPT 工作区功能无法使用。
让 Codex 登录在手机上也可用
登录一次很容易。更难的是你不在时服务器上的登录过期了,直到发现从手机启动的会话一动不动才知道。
如果你想从手机启动服务器上的 Codex 会话、查看状态并批准命令,而不用打开 SSH 应用,Happier 是一款开源应用,可以从手机、桌面或网页跨设备运行和编排 Codex、Claude Code 等代理。
代理运行在你自己的电脑上,手机、桌面和网页应用连接到它们。设置方法见如何在手机上使用 Happier。它在 GitHub 上开源,可以在这里下载,还有一个 Discord。
1) 在服务器上安装 Happier 并与手机配对
curl -fsSL https://happier.dev/install | bash
happier auth login --method mobile用手机上的 Happier 应用扫描二维码并批准。服务器会显示为一台可以启动会话的电脑(在 Happier 中称为机器)。
2) 在 Happier 应用中检查和刷新 Codex 登录
打开 设置(Settings)→ AI 与代理(AI & Agents)→ AI 提供商设置(AI backends)→ Codex,在上下文栏中选择服务器,查看 认证(Authentication)部分。它会显示 Codex 在那台电脑上是否已登录,以及使用哪种方式。
登录(Log in)或 重新认证(Reauthenticate)会在服务器上打开一个运行 codex login 的 提供商登录终端(Provider login terminal)。用其他方式登录后,例如通过 SSH 运行 codex login --device-auth,立即检查(Check now)会刷新状态。
3) 把 Codex 登录作为已连接服务存到 Happier
Happier 也可以把你的 Codex 订阅登录保存为已连接服务。它加密保存在你的 Happier 账号中,只在你自己的设备上解密,所以你任何一台电脑上的会话都能使用:
happier connect codex --device # device-code flow, for a headless box
happier connect codex --paste # fallback: paste the final redirect URL
happier connect codex --api-key # store an OpenAI API key instead--device 使用与方法 1 相同的设备码登录,所以同样受那个 ChatGPT 设置影响。--paste 是方法 2 的免隧道版本:你在笔记本上登录,复制浏览器最终停留的 URL,粘贴到终端中。之后账号会出现在 设置(Settings)→ 已连接服务(Connected services)下,启动 Codex 会话时可以选择它。
限制只说一次:服务器仍需开机并在线。Happier 让登录状态在手机上可见、可修复,但无法让关机的机器保持登录。
故障排除
codex login --device-auth 立刻失败
很可能你的账号关闭了设备码登录。在 ChatGPT 安全设置中打开它,或者请工作区管理员处理。如果做不到,就用 SSH 隧道或复制 auth.json。
Codex 登录的浏览器标签页访问不到 localhost:1455
那是回调在尝试访问你的笔记本。要么建立 SSH 隧道后重试,要么使用 happier connect codex --paste 并粘贴地址栏中的 URL。
codex login status 显示已登录,但服务启动的 Codex 会话失败
服务可能以另一个用户或另一个主目录运行,读取的是另一个 ~/.codex。以服务运行的用户身份登录,或者把登录存为已连接服务,让会话在启动时获取它。
Codex 远程控制提示需要 ChatGPT 认证
你是用 API 密钥登录的。远程控制需要 ChatGPT 登录,所以请使用方法 1、2 或 3。
常见问题
完全没有浏览器能登录 Codex 吗?
只有使用 API 密钥才行。每种 ChatGPT 登录方式都要在某台设备上用浏览器,但可以是你的手机。
复制 auth.json 安全吗?
可以用,但它和密码一样敏感。只让你的用户能读取,不要提交到仓库或打包进共享镜像。
设备码登录在 Docker 中能用吗?
能。因为没有任何东西回调到容器里,所以很适合这种场景。
哪些订阅可以用?
包含 Codex 的 ChatGPT 订阅,或者 OpenAI API 密钥。哪些订阅包含 Codex,请查看 OpenAI 的定价页面。