共计 1586 个字符,预计需要花费 4 分钟才能阅读完成。
【导语】:通过端到端加密从浏览器查看和管制近程终端的工具。
简介
TermPair 是一个通过端到端加密从浏览器查看和管制近程终端的工具,浏览器近程 + 实时操作命令行。让开发者能够平安地实时共享和管制终端,特地适宜服务器非桌面零碎的环境。
性能:
- 实时共享 unix 终端
- 通过浏览器连贯共享的终端,两者放弃同步
- 反对多个浏览器同时连贯
- 运行设置浏览器连贯为度读 / 写或只读权限
- 平安连贯,应用 AES 算法 128 位进行加密
- 须要平安的 HTTPS 网络环境
- 容许本人构建 Web 利用
- 播送终端的尺寸实时发送到浏览器,渲染始终匹配
- 与 Nginx 一起服务,或者作为 systemd 服务运行
我的项目地址:
https://github.com/cs01/termpair
能够在该地址试用:
https://chadsmith.dev/termpair
下载安装
只反对 Linux、macOS 零碎,须要装置 Python 3.6+ 版本。
下载可执行文件
能够从我的项目 Github 地址上找到发布页面,间接下载可执行文件运行即可
https://github.com/cs01/termpair/releases
应用 pipx 或 pip 装置
官网举荐应用 pipx 进行装置,它会在隔离环境中进行装置:
> pipx install termpair
或者用 pip 装置:
> pip install termpair
须要留神的是,TermPair 服务器与终端须要应用雷同的运行版本。
运行
应用 pipx 间接运行最新版本,无需装置:
> pipx run termpair serve
而后播送分享:
> pipx run termpair share
运行原理
TermPair 由三局部组成,别离是服务器、终端客户、在浏览器客户端中运行的 JavaScript Web 应用程序。
服务器
首先,termpair 服务器启动 (termpair serve)。服务器充当路由器,在 TermPair 终端客户端和连贯的浏览器之间转发加密数据。服务器侦听来自 unix 终端客户端的 termpair websocket 连贯,并保护到任何连贯该客户端的浏览器的映射。
终端客户端
当用户想要共享他们的终端时,运行 termpair share 以启动客户端。TermPair 客户端向服务器注册此会话,而后 fork 并启动一个 pty 过程。TermPair 在数据可用时从 pty 的文件描述符中读取数据,而后将其写入实在终端的规范输入,并在此处失常打印。然而,它会加密此输入并通过 websocket 将其发送到服务器。
Web 应用程序
TermPair 客户端在共享会话期间为用户提供惟一的 URL。该 URL 指向 TermPair Web 应用程序 (TypeScript/React),该应用程序设置 websocket 连贯以接管和发送加密的终端数据。收到数据后,将其解密并写入基于浏览器的终端。
当用户在浏览器终端输出时,在浏览器中用密钥加密,发送到服务器,从服务器转发到终端,而后在终端通过 TermPair 解密。最初,TermPair 客户端将其写入 pty 的文件描述符。
加密
TermPair 客户端在启动时会创立三个 128 位 AES 加密密钥:
- 第一个用于将终端的输入发送到服务器之前对其进行加密。
- 第二个用于将用户输出发送到服务器之前对其进行加密。
- 第三个是浏览器用来解密来自播送终端的初始连贯响应的“疏导”密钥,其中蕴含用第三个密钥加密的上述两个密钥。浏览器通过服务器无法访问的局部 url 或通过用户手动输出获取此疏导程序密钥。没有应用像 Diffie-Hellman 这样的密钥协商算法,因为多个浏览器能够连贯到终端,这会减少 TermPair 代码库的复杂性。不过,将来可能会思考某种模式的 DH。
开源前哨
日常分享热门、乏味和实用的开源我的项目。参加保护 10 万 + Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。