远程服务器上的 Codex SSH 登录 —— 用 Loris Tunnel 简化端口转发
如果你通过 SSH 在远程 Linux 服务器上使用 Codex,可能会遇到一个恼人的登录问题:认证流程期望一个 localhost 回调,而你的浏览器在笔记本上,不在服务器上。
openai/codex issue #2668 中的社区讨论记录了一个实用方案:使用 SSH 本地端口转发。本文解释这套做法,并说明 Loris Tunnel 如何让同样的 codex ssh 工作流更好操作。
codex ssh 环境中的问题
在本地环境中,Codex 会打开浏览器,并通过本地回调地址(例如 http://localhost:1455/...)完成认证。
在远程主机(SSH 会话)上,回调监听器运行在服务器的 localhost 上。如果不做转发,直接在你的笔记本上打开该 URL,浏览器无法访问远程的 localhost 进程。
issue 讨论中的 SSH 转发方案
方案很简单:
- 在远程服务器上启动 Codex,等待登录 URL。
- 在你的本机上创建 SSH 本地端口转发:
ssh -N -L 1455:localhost:1455 root@YOUR_SERVER- 复制服务器上 Codex 打印出的完整认证 URL。
- 手动粘贴到你本地的浏览器。
- 完成登录;服务器上的 Codex 收到回调并完成认证。
为什么这样有效
-L 1455:localhost:1455 通过 SSH 把你本地的 1455 端口映射到远程服务器上的 localhost:1455。
这样,浏览器访问的 http://localhost:1455/... 实际指向服务器上的回调监听器,正好符合登录流程的期望。
长期使用时会麻烦在哪
原始命令能用,但日常使用会变得琐碎:
- 必须常开一个专用终端会话。
- 可能需要自定义端口(
9000 -> 1455)来避免冲突。 - 网络抖动、笔记本休眠或 VPN 切换会中断长连接转发。
- macOS 和 Windows 上的团队成员往往各自维护不同的脚本。
偶尔用一次可以接受。但如果要反复执行 codex ssh 操作,托管式的隧道工作流通常更合适。
Loris Tunnel 如何支持同一套流程
Loris Tunnel 不改变 SSH 或认证协议,它只是把隧道的生命周期放进桌面界面,让这套方案更容易稳定复现。
| codex ssh 工作流的需求 | Loris Tunnel 提供的价值 |
|---|---|
让 localhost 转发保持存活 | 自动重连与长连接转发的健康状态可见。 |
| 反复复用同一映射 | 保存带标签的隧道配置,快速重启。 |
| 处理非默认 SSH 端口与跳板机 | 无需记住冗长的一行命令即可配置复杂 SSH 路径。 |
| 减少守着终端的成本 | 在一个地方启动、停止、查看转发。 |
配置映射示例
如果你现在使用:
ssh -p 2222 -N -L 1455:localhost:1455 root@YOUR_SERVER可以在 Loris Tunnel 中这样建模同一条路径:
- SSH 主机:
YOUR_SERVER - SSH 端口:
2222 - 本地绑定:
127.0.0.1:1455 - 远端目标:
127.0.0.1:1455
然后在远端运行 Codex,复制打印出的登录 URL,像平常一样粘贴到本地浏览器。
快速排查清单
- 在服务器上确认监听状态:
ss -ltnp | rg 1455- 或
netstat -tulnp | rg 1455
- 如果本地
1455端口被占用,改转发到其他本地端口:ssh -N -L 9000:localhost:1455 root@YOUR_SERVER
- 如果 SSH 使用自定义端口:
ssh -p 2222 -N -L 1455:localhost:1455 root@YOUR_SERVER
- 如果登录链接被错误的程序打开,请把 URL 以纯文本复制后手动粘贴到浏览器。
小结
issue #2668 中的 SSH 转发方案是解决远程 codex ssh 登录回调的正确做法。Loris Tunnel 建立在这一模式之上,让你日常使用时少一些脆弱的 shell 会话、多一些可靠的隧道操作。