ttyd 使用备忘
临时使用手机连接服务器上的 Codex,会碰到两个问题:
- 远程桌面在手机上比例差不顺手
- 纯 SSH 连接使用tmux退出的前置键位等操作不顺手
可以使用下面方案:
tmux + ttyd + Tailscale
思路很直接:
- 用
tmux承载 Codex 会话 - 用
ttyd把这段终端会话变成网页 - 用
Tailscale把访问范围限制在自己的 tailnet 内 - 手机上直接打开网页终端连接
1. 准备 tmux
建议 Codex 跑在独立会话里:
|
|
这样你电脑上 SSH 连进去可以接管,手机上通过 ttyd 打开网页也能接管,核心会话始终是同一个。
2. 准备 ttyd
2.1 安装
ttyd 是一个把终端共享成 Web 页面的工具。
- Linux 安装:
|
|
- Windows 安装:
|
|
2.2 最小可用命令
先直接起一个最小服务:
|
|
其中:
-p 7681:监听端口-c admin:admin123:开启基础认证, 用户名是admin,密码是admin123tmux new -A -s codex:把网页终端连接到codex这个 tmux 会话
然后在浏览器打开:
|
|
3. Tailscale 控制连接
Tailscale 能让分布在不同网络下的设备通过身份认证安全地组成一个局域网,实现内网穿透和直接访问。
3.1 安装
-
Linux:
Tailscale内核模式依赖TUN,通常需要宿主机管理员权限。1 2 3 4curl -fsSL https://tailscale.com/install.sh | sh # 启动服务 sudo tailscale up # 接着会输出一个登录链接,复制到浏览器里登录后服务器就加入了你的 tailnet- 无
TUN模式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14curl -fsSL https://tailscale.com/install.sh | sh # 安装完后分别在两个 shell 执行 tailscaled \ --tun=userspace-networking \ --socks5-server=127.0.0.1:1055 \ --outbound-http-proxy-listen=127.0.0.1:1055 tailscale up # 接着会输出一个登录链接,复制到浏览器里登录后服务器就加入了你的 tailnet # 无 TUN 模式下,应用不会自动走 Tailscale,要显式走代理 # 例如 export ALL_PROXY=socks5://127.0.0.1:1055 export HTTP_PROXY=http://127.0.0.1:1055 export HTTPS_PROXY=http://127.0.0.1:1055 - 无
-
Windows:
- 直接从 Tailscale 官网 下载 Windows 安装包,安装后登录即可。
-
Android:
- Google Play 可用:直接从
Google Play安装 Android 客户端。 - Google Play 不可用:从 Tailscale 官方提供的 Android APK 手动安装。
- Google Play 可用:直接从
3.2 网络连接
服务器可能在内网环境,不具有公网 IP,通过 Tailscale 可以让同一 tailnet 内的设备访问这个服务。
ttyd只监听127.0.0.1- 用
tailscale serve把本地端口暴露给 tailnet 内的设备
- 启动
ttyd:
|
|
- 随后服务器和访问设备都启动
Tailscale,并加入同一个tailnet,就可以从访问设备访问服务器上的ttyd服务:
|
|
- Windows 连接:
- Android 连接:
问题记录:
-c认证可以访问token,但在部分浏览器里可能无法正常建立连接。- 默认前端
xterm.js在Android设备上可能出现渲染问题,可以尝试-t rendererType=canvas。