终端共享工具如何把你的 Shell 放进浏览器
来源:dev.to — 2026-07-26
📋 概述
作者深入剖析了 ttyd、TermPair 和 sshx 三种终端共享工具的内部实现原理。它们的核心机制都建立在 Unix 伪终端之上——内核通过一对文件描述符模拟 1965 年的物理电传打字机,主端由终端模拟器持有,从端交给 bash,bash 完全不知道自己正在被"欺骗"。这三款工具分别采用了 WebSocket 代理、端到端加密 WebRTC 和 Rust 编写的分布式服务器三种不同架构来转发 PTY 字节流,在安全性、延迟和部署复杂度上各有取舍。
🔑 核心要点
- 所有终端共享工具的基础是 Unix 伪终端(PTY)——bash 并不直接与键盘通信,而是与内核模拟的文件描述符交互
- ttyd 采用WebSocket 代理模式,将 PTY 主端的字节流通过 libwebsockets 转发到浏览器中的 xterm.js
- TermPair 使用端到端加密的 WebRTC连接,终端数据不经服务器中转,安全性最高
- sshx 用 Rust 重写,通过分布式服务器实现全球低延迟共享,代表了新一代终端协作工具的方向
💡 金句
你的终端模拟器持有主端,bash 持有从端,bash 完全不知道自己正在被欺骗。任何写入主端的内容都会作为键盘输入呈现给 bash,而 bash 打印的任何内容都会从主端返回。这就是整个把戏。
👍 0
👎 0
← 返回 Dev.to 首页