Codex Remote Login : 一键解决远程服务器 / VPS 登录 Codex CLI 失败的问题

3 月 9 日
 handsomebro

今天在海鲜市场收了一个 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 终端下运行)

  1. 把它 down 下来
git clone https://github.com/codertesla/codex-remote-login.git
cd codex-remote-login
chmod +x codex-remote-login.sh
  1. 执行脚本,后面跟上你的 SSH 目标服务器(支持 config alias 或者指定私钥)
# 格式
./codex-remote-login.sh <你的远端 SSH 信息>
 
# 比如
./codex-remote-login.sh root@x.x.x.x
./codex-remote-login.sh my-vps

运行后它会弹出一个链接,你本地浏览器点进去走完授权,它就会提示远程登录成功,然后自动挥挥衣袖带走隧道。

希望这个小脚本能帮到同样在 VPS 或者跳板机上开发,又被 Codex CLI 这个诡异的重定向逻辑折磨过的 V 友们。

4452 次点击
所在节点    分享创造
8 条回复
letitbesqzr
3 月 9 日
本地登录后, 跳转到 http://localhost:1455 , 拿到完整的 url 地址, 去服务器上 curl http://localhost:1455/xxxx
codehz
3 月 9 日
一楼亮了,我之前也是这么干的
Yuesh1
3 月 9 日
ssh -N -L 18789:127.0.0.1:18789 root@192.168.11.112
handsomebro
3 月 9 日
@letitbesqzr 我为什么知道的这么晚
shunia
3 月 10 日
招很多,我用过两种:
本地 login 后复制 auth.json 到其他机器,其他文件都不需要;
远程装一个 CliProxyAPI ,直接在 CPA 里 auth ;
ggbond2
3 月 10 日
ssh -N -L 18789:127.0.0.1:18789 root@xxxx
PowerDi
3 月 15 日
windows 也能执行 sh 脚本吗
summerzhen
4 月 14 日
@letitbesqzr 现在没效果了? curl 显示 State Mismatch?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1196920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX