本指南解释了什么是 TermPair,它是如何工作的,以及如何在 Linux 中使用 TermPair 从 Web 浏览器通过端到端加密实时共享和控制终端。
什么是术语对?
术语对 是一种网络服务,允许任何人从网络浏览器实时查看和控制他们的终端会话。 简而言之,它让人们可以实时协作、查看、分享。
使用 TermPair,您可以快速、轻松、安全地将您的终端共享到 Web 并从任何支持 Internet 的设备访问和控制它。
TermPair 使用 AES-GCM
128 bit
端到端加密,因此所有终端数据都在客户端和网络浏览器之间安全传输。 TermPair 服务器和任何第三方都无法读取传输的数据。
它完全免费使用,并且 TermPair 的源代码在 GitHub 上公开可用。 TermPair 是使用 Python 以及 CSS、HTML 和 JavaScript 等 Web 技术编写的。
TermPair 是如何工作的?
TermPair 由以下组件组成:
- TermPair 服务器,
- Unix 终端客户端(你的系统),
- 网页浏览器。
终端客户端和浏览器之间的数据传输如下所述:
1.首先,我们启动TermPair server termpair serve
来自我们系统的命令。 TermPair 服务器充当终端和浏览器之间的路由器。 它在终端客户端和连接的浏览器之间发送加密数据。
2. TermPair 服务器监听来自 Unix 终端客户端的 termpair websocket 连接,并维护到所有连接的浏览器的映射。
3. 在 Unix 终端客户端中,一个伪终端(pty
) 进程以新的 shell 启动,并在用户系统中生成加密密钥。
4. 生成加密密钥后,新的客户端会话以唯一的会话 ID 向 TermPair 服务器注册。
5.接下来,全部 pty
IO 使用密钥加密,因此 TermPair 服务器无法读取它。 终端数据加密后,通过 websocket 共享给 TermPair 服务器进行进一步路由。
6、TermPair服务器通过websocket接收和发送加密的终端数据给浏览器。 请注意,TermPair 服务器不接收密钥。 它只接收加密数据。
7. 浏览器通过URL的一部分获取秘密加密密钥。 包含密钥的 URL 哈希不会暴露给 TermPair 服务器。
8. 浏览器收到加密数据后,使用密钥对其进行解密,最后在浏览器中显示终端输出。
9. 同样,当数据从浏览器发送到终端时,使用密钥对其进行加密,然后转发到 TermPair 服务器。
10. 服务器接收到加密后的数据,并将数据发送回终端。 数据使用终端中的密钥解密,最终显示在标准输出中。
这就是终端客户端、TermPair 服务器和 Web 浏览器之间发生数据传输的方式。 所有数据都经过加密并安全地从一个点传输到另一个点。
TermPair 适用于所有 shell,例如 example bash
, zsh
并适用于任何程序,例如 vim
, emacs
, tmux
, ssh
等等
注意事项
TermPair 非常适合那些想要实时协作的人。 它也有一些安全漏洞。 如果你不小心,这可能是一个灾难性的错误。
你永远不应该在公共场所尝试这个。 有人可能会看到可共享的 URL 并试图控制您的系统。 更重要的是,您必须知道如果您允许他们控制您的终端,他们可以做什么。
拥有 TermPair 可共享 ID (URL) 的任何人只要知道 sudo
密码。 如果您开始会话 root
用户,这将是非常危险的!
- 他们可以查看终端输出的每个字符。
- 运行任何命令,
- 访问整个文件系统,
- 查看系统中的所有数据,
- 删除所有数据,
- 重新启动或关闭系统,
- 安装恶意软件或病毒,
- 和任何东西,一切!
如果您在一个封闭且受信任的网络中,或者如果您想在本地系统上对其进行测试,请继续。 它不会造成任何伤害。
在 Linux 中安装 TermPair
为了使 TermPair 工作,你应该有一个 Linux 系统 Python 3.6+ 安装。
在 Linux 中安装 TermPair 使用 pipx
或者 pip
包管理器如下:
$ pipx install termpair
或者,
$ pip install termpair
您也可以在不安装 TermPair 的情况下运行它:
服务:
$ pipx run termpair serve
然后分享:
$ pipx run termpair share --open-browser
使用 TermPair 从 Web 浏览器实时共享和控制终端
1. 使用命令启动 TermPair 服务器:
$ termpair serve
样本输出:
INFO: Started server process [19084] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on https://localhost:8000 (Press CTRL+C to quit)
这应该在您开始共享终端之前运行。
2. 打开一个新的终端窗口或选项卡并运行以下命令来共享您的终端:
$ termpair share --host "https://localhost/" --port 8000
样本输出:
Connection established with end-to-end encryption ?
Sharing '/bin/bash' at
https://localhost:8000/?terminal_id=0a8cxxxxxxxxxx1234x*&
Type 'exit' or close terminal to stop sharing.
如上所示,将生成一个唯一的 TermPair 会话 ID。
3. 打开您的网络浏览器并复制/粘贴地址栏中显示的会话 ID。
现在,您在终端中输入的任何内容都会出现在浏览器中,反之亦然。 含义 – 您可以在浏览器或终端中键入命令。 输入和输出将出现在两个窗口中。 这为拥有会话 ID 的任何人提供了完全控制权。
要退出终端共享,只需 close 终端或类型 exit
并按下 ENTER
. 停止终端共享后,进入TermPair启动的终端,按 CTRL+C
退出它。
4.如果您不想完全控制,可以使用 --no-browser-control
, 或者 -n
选项。
确保 TermPair 服务器已启动并以只读模式启动终端共享,如下所示。
$ termpair serve
$ termpair share --host "https://localhost/" --port 8000 -n
在只读模式下,他们不能在浏览器中运行任何命令,只能查看终端中打印的任何内容。 您可以决定谁可以控制您的终端。
5. 默认情况下,TermPair 服务器将运行在端口上 8000
. 您还可以选择您选择的任何其他端口。 为了 example,以下命令在端口上运行 TermPair 服务器 8080
.
$ termpair share --host "https://localhost/" --port 8080
6. 如果您想在开始分享后自动打开网络浏览器,请使用 --open-browser
, 或者 -b
选项。
$ termpair share --host "https://localhost/" --port 8000 -b
请记住,在使用此命令之前必须运行 termpair 服务器。
7. 要显示帮助部分,请运行:
$ termpair serve --help
$ termpair share --help
结论
TermPair 帮助我们轻松地将您的终端会话分享给任何人。 当您需要有关代码的任何帮助时,您可以使用它。 您可以与值得信赖的朋友或同事共享终端。 他们可以从任何地方立即查看和访问您的终端会话,并尽可能为您提供帮助。
如前所述,您在共享终端时也必须小心。 如果您不了解它的工作原理,最好避免使用此工具。
资源:
相关阅读:
- 如何使用 Streamhut 将终端共享到 Web
- Tmate – 立即将您的终端分享给任何地方的任何人
- Seashells – 将 Linux 命令的输出实时传送到 Web