Codex Docs 身份验证
English

身份验证

基于使用量付费的替代方案:使用 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 计划,请按照以下步骤操作:

  1. 更新 CLI 并确保 codex --version0.20.0 或更高版本
  2. 删除 ~/.codex/auth.json(在 Windows 上:C:\\Users\\USERNAME\\.codex\\auth.json
  3. 再次运行 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/...)。流量将被隧道传输到远程服务器。