今天在海鲜市场收了一个 ChatGPT Team 的一个月车位,想着终于能爽用一把官方的 Codex 5.4 了。
结果一顿操作上服务器(一台没有 GUI 的纯净 Linux VPS ),敲下 codex login,傻眼了。
官方这个 CLI 的认证逻辑非常有毒:
它必须要求你在本地浏览器完成 OAuth 授权,然后网页端会把 Token 回调到 http://localhost:1455。
因为我是 SSH 连在远程 VPS 上敲的登录命令,VPS 在 1455 端口干等,而我的浏览器在本地的 Mac 上,回调根本打不到服务器,最后要不就是满屏的 State Mismatch 错误,要不就是直接 Bad Request。
CLI 提示信息说,Headless 机器可以使用 codex login --device-auth(也就是给你一串验证码去浏览器填)。结果一敲这行命令,打开本地浏览器,登录后提示:当前 Team 管理员未开启设备验证功能... GG 。
查了一下 GitHub 和各种论坛,大部分老哥给出的“偏方”是:
在自己本地有浏览器的电脑装一个 Codex CLI -> 登录成功 -> 把 ~/.config/codex 等一堆授权文件夹用 tar 打个包 -> SCP 传到远端 VPS 解压覆盖。
这种手工搬运 Token 的方式实在是既繁琐(每次过期都要折腾一轮),又感觉极度不优雅。
既然是网络的痛点,那就走网络解决:SSH 临时隧道
原理很简单:只要我在执行 codex login 的同时,把本机的 1455 端口悄悄通过 SSH 映射到远端服务器的 1455 端口,那浏览器重定向不就完美回传了吗?
为了以后不再折腾,顺手糊了一个极简的 Bash 脚本,完全零依赖。
核心逻辑就是用 SSH ControlSocket 在后台默默建立一个临时隧道,触发登录之后,只要你授权完成或者 Ctrl+C 打断,它会自动 trap cleanup EXIT,把这条隐藏的隧道拆干净,不留任何多余进程,如丝般顺滑。
脚本开源放在这了:
👇👇👇
GitHub: codertesla/codex-remote-login
用法极其傻瓜:
(全程都在你本地的 Mac/Windows 终端下运行)
git clone https://github.com/codertesla/codex-remote-login.git
cd codex-remote-login
chmod +x codex-remote-login.sh
# 格式
./codex-remote-login.sh <你的远端 SSH 信息>
# 比如
./codex-remote-login.sh [email protected]
./codex-remote-login.sh my-vps
运行后它会弹出一个链接,你本地浏览器点进去走完授权,它就会提示远程登录成功,然后自动挥挥衣袖带走隧道。
希望这个小脚本能帮到同样在 VPS 或者跳板机上开发,又被 Codex CLI 这个诡异的重定向逻辑折磨过的 V 友们。
1
letitbesqzr 18 小时 47 分钟前 本地登录后, 跳转到 http://localhost:1455 , 拿到完整的 url 地址, 去服务器上 curl http://localhost:1455/xxxx
|
2
codehz 17 小时 40 分钟前 via Android
一楼亮了,我之前也是这么干的
|
3
Yuesh1 16 小时 8 分钟前
ssh -N -L 18789:127.0.0.1:18789 [email protected]
|
4
handsomebro OP @letitbesqzr 我为什么知道的这么晚
|
5
shunia 2 小时 49 分钟前
招很多,我用过两种:
本地 login 后复制 auth.json 到其他机器,其他文件都不需要; 远程装一个 CliProxyAPI ,直接在 CPA 里 auth ; |
6
ggbond2 1 小时 42 分钟前
ssh -N -L 18789:127.0.0.1:18789 root@xxxx
|