Skip to content

身份验证

基于使用情况的计费替代方案:使用 OpenAI API 密钥

如果您更喜欢按使用量付费,您仍然可以使用 OpenAI API 密钥进行身份验证:

shell
printenv OPENAI_API_KEY | codex login --with-api-key

或者,从文件中读取:

shell
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 容器,您可以执行:

shell
# 用您的 Docker 容器的名称或 ID 替换 MY_CONTAINER:
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

shell
ssh user@remote 'mkdir -p ~/.codex'
scp ~/.codex/auth.json user@remote:~/.codex/auth.json

或尝试这个单行命令:

shell
ssh user@remote 'mkdir -p ~/.codex && cat > ~/.codex/auth.json' < ~/.codex/auth.json

通过 VPS 或远程连接

如果您在没有本地浏览器的远程机器(VPS/服务器)上运行 Codex,登录助手会在远程主机上的 localhost:1455 上启动服务器。要在您的本地浏览器中完成登录,请在启动登录流程之前将该端口转发到您的机器:

bash
# 从您的本地机器
ssh -L 1455:localhost:1455 <user>@<remote-host>

然后,在该 SSH 会话中,运行 codex 并选择"使用 ChatGPT 登录"。出现提示时,在您的本地浏览器中打开打印的 URL(将是 http://localhost:1455/...)。流量将被隧道化到远程服务器。