身份验证
基于使用量付费的替代方案:使用 OpenAI API 密钥
如果你喜欢按使用量付费,你仍然可以使用你的 OpenAI API 密钥进行身份验证:
printenv OPENAI_API_KEY | codex login --with-api-key
或者,从文件读取:
codex login --with-api-key < my_key.txt
传统的 --api-key
标志现在会报错并指示你使用 --with-api-key
,这样密钥永远不会出现在 shell 历史记录或进程列表中。
此密钥必须至少具有对 Responses API 的写入访问权限。
从 API 密钥迁移到 ChatGPT 登录
如果你之前使用过 Codex CLI 并通过 API 密钥进行基于使用量付费,现在想切换到使用你的 ChatGPT 计划,请按照以下步骤操作:
- 更新 CLI 并确保
codex --version
是0.20.0
或更高版本 - 删除
~/.codex/auth.json
(在 Windows 上:C:\\Users\\USERNAME\\.codex\\auth.json
) - 再次运行
codex login
在"无头"机器上连接
目前,登录过程需要在 localhost:1455
上运行服务器。如果你在"无头"服务器上,例如 Docker 容器或通过 ssh
连接到远程机器,在本地机器上的浏览器中加载 localhost:1455
不会自动连接到在 无头 机器上运行的 web 服务器,因此你必须使用以下解决方法之一:
在本地身份验证并将凭据复制到"无头"机器
最简单的解决方案可能是在本地机器上运行 codex login
过程,这样 localhost:1455
在你的 Web 浏览器中 是 可访问的。当你完成身份验证过程时,应该在 $CODEX_HOME/auth.json
中提供一个 auth.json
文件(在 Mac/Linux 上,$CODEX_HOME
默认为 ~/.codex
,而在 Windows 上,它默认为 %USERPROFILE%\\.codex
)。
因为 auth.json
文件不与特定主机绑定,一旦你在本地完成身份验证流程,你可以将 $CODEX_HOME/auth.json
文件复制到无头机器,然后 codex
在该机器上应该"就能正常工作"了。注意,要将文件复制到 Docker 容器,你可以这样做:
# 将 MY_CONTAINER 替换为你的 Docker 容器的名称或 id:
CONTAINER_HOME=$(docker exec MY_CONTAINER printenv HOME)
docker exec MY_CONTAINER mkdir -p "$CONTAINER_HOME/.codex"
docker cp auth.json MY_CONTAINER:"$CONTAINER_HOME/.codex/auth.json"
而如果你通过 ssh
连接到远程机器,你可能想要使用 scp
:
ssh user@remote 'mkdir -p ~/.codex'
scp ~/.codex/auth.json user@remote:~/.codex/auth.json
或者试试这个单行命令:
ssh user@remote 'mkdir -p ~/.codex && cat > ~/.codex/auth.json' < ~/.codex/auth.json
通过 VPS 或远程连接
如果你在没有本地浏览器的远程机器(VPS/服务器)上运行 Codex,登录助手会在远程主机上的 localhost:1455
启动服务器。要在本地浏览器中完成登录,请在开始登录流程之前将该端口转发到你的机器:
# 从你的本地机器
ssh -L 1455:localhost:1455 <user>@<remote-host>
然后,在该 SSH 会话中,运行 codex
并选择"使用 ChatGPT 登录"。当提示时,在你的本地浏览器中打开打印的 URL(它将是 http://localhost:1455/...
)。流量将被隧道传输到远程服务器。