【Codex】Ubuntu 安装 Codex CLI 并解决 Clash 代理与账号认证问题

目录

1.概要

[2. 安装基础依赖](#2. 安装基础依赖)

[3. 安装 Node.js](#3. 安装 Node.js)

[4. 安装 Codex CLI](#4. 安装 Codex CLI)

[5. Codex CLI 的登录方式说明](#5. Codex CLI 的登录方式说明)

[6. 检查 Clash 代理端口](#6. 检查 Clash 代理端口)

[7. Firefox 无法访问 Google 的原因](#7. Firefox 无法访问 Google 的原因)

[8. 给当前终端配置代理](#8. 给当前终端配置代理)

[9. 重新执行 Codex 登录](#9. 重新执行 Codex 登录)

[10. 成功进入 Codex CLI](#10. 成功进入 Codex CLI)


1.概要

最近在 Linux 虚拟机环境中安装并使用 OpenAI Codex CLI。我的环境是:

  • 系统版本:Ubuntu 24
  • 运行环境:Linux 虚拟机
  • 代理工具:Clash Verge
  • 登录方式:ChatGPT 账号登录
  • Codex CLI 版本:v0.125.0

整个过程中主要遇到了三个问题:

  1. Codex CLI 如何安装;
  2. 解决 Clash 代理问题;
  3. codex login --device-auth 登录时报 403 Forbidden 如何处理。
  4. 解决 Codex CLI 登录认证问题。

2. 安装基础依赖

先更新系统软件源:

复制代码
sudo apt update
sudo apt upgrade -y

安装常用基础工具:

复制代码
sudo apt install -y curl git build-essential ca-certificates

3. 安装 Node.js

Codex CLI 通过 npm 安装,因此需要先安装 Node.js。

这里使用 Node.js 20:

复制代码
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

检查版本:

复制代码
node -v
npm -v

只要能正常输出版本号,就说明 Node.js 和 npm 已经安装成功。

4. 安装 Codex CLI

使用 npm 全局安装 Codex CLI:

复制代码
npm i -g @openai/codex

安装完成后检查版本:

复制代码
codex --version

也可以查看帮助信息:

复制代码
codex --help

如果能正常输出版本或帮助信息,说明 Codex CLI 已经安装成功。


5. Codex CLI 的登录方式说明

可以直接执行:

复制代码
codex login

如果当前 Linux 环境没有图形浏览器,或者是在远程服务器、虚拟机中使用,可以执行(我使用的这种方式):

复制代码
codex login --device-auth

该命令会生成一个认证链接和一次性验证码,需要在浏览器中打开链接并输入验证码完成授权。

6. 检查 Clash 代理端口

我的 Ubuntu 虚拟机中安装了 Clash Verge,但一开始并不确定终端是否走了代理。

先尝试常见端口 7890

复制代码
curl -I -x http://127.0.0.1:7890 https://www.google.com

结果报错,这说明本机 7890 端口没有代理服务在监听。:

复制代码
curl: (7) Failed to connect to 127.0.0.1 port 7890 after 0 ms: Couldn't connect to server

后来发现当前 Clash Verge 代理口为 7890。

复制代码
curl -I -x http://127.0.0.1:7897 https://www.google.com

返回结果类似:

复制代码
HTTP/1.1 200 Connection established

HTTP/2 200
content-type: text/html; charset=ISO-8859-1

这说明 Clash 的 HTTP 代理端口是 7897,并且通过该代理可以正常访问 Google。


7. Firefox 无法访问 Google 的原因

虽然命令行通过代理可以访问 Google,但虚拟机中的 Firefox 浏览器仍然无法访问。

原因是:Firefox 没有配置使用 Clash 的代理端口。

可以在 Firefox 中手动设置代理:

  1. 打开 Firefox;

  2. 进入 Settings / 设置;

  3. 搜索 proxy;

  4. 打开 Network Settings / 网络设置;

  5. 选择 Manual proxy configuration / 手动代理配置;

  6. 设置代理:

    HTTP Proxy: 127.0.0.1
    Port: 7897

同时勾选:

复制代码
Also use this proxy for HTTPS

或者 HTTPS Proxy 也填写:

复制代码
HTTPS Proxy: 127.0.0.1
Port: 7897

保存后再次访问:

复制代码
https://www.google.com

如果 Clash 节点正常,Firefox 就可以访问 Google。

8. 给当前终端配置代理

Codex CLI 是在终端中运行的,因此需要让当前终端也走 Clash 代理。

由于我的代理端口是 7897,所以执行:

复制代码
export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=http://127.0.0.1:7897
export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897

有些程序还会读取 ALL_PROXY

复制代码
export ALL_PROXY=http://127.0.0.1:7897
export all_proxy=http://127.0.0.1:7897

然后测试 OpenAI 认证域名:

复制代码
curl -I https://auth.openai.com

如果能返回正常 HTTP 响应,说明当前终端访问 OpenAI 认证服务基本没有问题。


9. 重新执行 Codex 登录

配置代理后,还需要在chatgpt web端开启安全权限:

Linux终端执行:

复制代码
codex login --device-auth

这次成功进入 device code 登录流程:

复制代码
Welcome to Codex [v0.125.0]
OpenAI's command-line coding agent

Follow these steps to sign in with ChatGPT using device code authorization:

1. Open this link in your browser and sign in to your account
   https://auth.openai.com/codex/device

2. Enter this one-time code (expires in 15 minutes)
   XXXX-XXXX

Device codes are a common phishing target. Never share this code.

注意:这里的验证码是一次性的,通常 15 分钟内有效。验证码不要分享给别人。

接下来:

  1. 在浏览器中打开:

    https://auth.openai.com/codex/device

  2. 登录自己的 ChatGPT / OpenAI 账号;

  3. 输入终端中显示的一次性验证码;

  4. 授权成功后回到 Linux 终端;

  5. Codex CLI 会自动完成登录。

如果验证码过期,重新执行即可:

复制代码
codex login --device-auth

10. 成功进入 Codex CLI

在web端认证成功后,在终端执行:

复制代码
codex

进入交互界面:

复制代码
╭───────────────────────────────────────╮
│ >_ OpenAI Codex (v0.125.0)            │
│                                       │
│ model:     gpt-5.4   /model to change │
│ directory: ~                          │
╰───────────────────────────────────────╯

这说明 Codex CLI 已经可以正常使用。

相关推荐
程序猿编码3 小时前
大模型的“文字障眼法“:FlipAttack 文本反转越狱技术全解析
linux·python·ai·大模型
艾莉丝努力练剑3 小时前
【Linux网络】Linux 网络编程:HTTP(四)从手写服务器到生产级 Nginx 与 cpp-httplib 实战
linux·运维·服务器·网络·c++·nginx·http
Yunzenn3 小时前
深度分析字节最新研究cola-DLM第 01 章:语言生成的三次范式之争 —— 从 RNN 到 AR 到扩散
linux·人工智能·rnn·深度学习·机器学习·架构·transformer
feng_you_ying_li4 小时前
linux之进程间通信,核心是匿名管道的原理与用匿名管道实现进程池的代码
linux
Harm灬小海4 小时前
【云计算学习之路】学习Centos7系统:Linux磁盘管理
linux·运维·服务器·学习·云计算
chushiyunen4 小时前
python使用笔记(linux环境)
linux·笔记·python
艾莉丝努力练剑4 小时前
【Linux网络】Linux 网络编程:HTTP(三)HTTP 协议原理
linux·运维·服务器·网络·c++·http
小皮蛋儿子4 小时前
mac 微信双开
linux·服务器·apache
minji...4 小时前
Linux 网络基础之网络IP层(十一)私有IP地址和公网IP地址,运营商和全球网络,理解公网
linux·服务器·网络·nat·内网·公网·运营商
Rabbit_QL4 小时前
【find的用法】macOS/Linux 下高效查找文件
linux·macos