从 Web 浏览器实时共享和控制终端

本指南解释了 TermPair 是什么,它是如何工作的,以及如何在 Linux 中使用 TermPair 通过端到端加密从 Web 浏览器实时共享和控制终端。

内容

  1. 什么是术语对?
  2. TermPair 如何运作?
  3. 注意事项
  4. 在 Linux 中安装 TermPair
  5. 使用 TermPair 从网络浏览器实时共享和控制终端
    1. 结论

什么是术语对?

术语对 是一种网络服务,允许任何人从网络浏览器实时查看和控制他们的终端会话。 简而言之,它让人们可以实时协作、查看、共享。

使用 TermPair,您可以快速、轻松、安全地将您的终端共享到 Web,并从任何支持 Internet 的设备访问和控制它。

TermPair 使用 AES-GCM 128 bit 端到端加密,因此所有终端数据都在客户端和 Web 浏览器之间安全传输。 TermPair 服务器或任何第三方都无法读取传输的数据。

它完全免费使用,并且 TermPair 的源代码在 GitHub 上公开提供。 TermPair 是使用 Python 和 Web 技术(如 CSS、HTML 和 JavaScript)编写的。

TermPair 如何运作?

TermPair 由以下组件组成:

  • TermPair 服务器,
  • Unix 终端客户端(您的系统),
  • 网页浏览器。

数据传输发生在终端客户端和浏览器之间,如下所述:

1. 首先,我们启动 TermPair 服务器 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,例如 bash, zsh 并适用于任何程序,例如 vim, emacs, tmux, ssh 等等。

注意事项

TermPair 适合那些想要实时协作的人。 它也有一些安全漏洞。 如果你不小心,这可能是一个灾难性的错误。

您永远不应该在公共场所尝试此操作。 有人可能会看到可共享的 URL 并试图控制您的系统。 更重要的是,您必须意识到如果您允许某人控制您的终端,他们可以做什么。

任何拥有 TermPair 可共享 ID (URL) 的人都可以执行以下操作,前提是他们知道 sudo 密码。 如果您开始会话 root 用户,这将是非常危险的!

  • 他们可以查看终端输出的每个字符。
  • 运行任何命令,
  • 访问整个文件系统,
  • 查看系统中的所有数据,
  • 删除所有数据,
  • 重新启动或关闭系统,
  • 安装恶意软件或病毒,
  • 和任何东西,一切!

如果您处于封闭且受信任的网络中,或者您想在本地系统上对其进行测试,请继续。 它不会造成任何伤害。

在 Linux 中安装 TermPair

要使 TermPair 工作,您应该有一个 Linux 系统 蟒蛇 3.6+ 安装。

在 Linux 中安装 TermPair 使用 pipx 或者 pip 包管理器如下:

$ pipx install termpair

或者,

$ pip install termpair

您还可以在不安装的情况下运行 TermPair:

服务:

$ pipx run termpair serve

然后分享:

$ pipx run termpair share --open-browser

使用 TermPair 从网络浏览器实时共享和控制终端

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。

使用 TermPair 从网络浏览器实时共享和控制终端

现在,您在终端中输入的任何内容都会出现在浏览器中,反之亦然。 含义 – 您可以在浏览器或终端中键入命令。 输入和输出将出现在两个窗口中。 这使拥有会话 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. 您还可以选择您选择的任何其他端口。 例如,以下命令在端口上运行 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 帮助我们轻松地将您的终端会话分享给任何人。 当您的代码需要任何帮助时,您可以使用它。 您可以与值得信赖的朋友或同事共享终端。 他们可以从任何地方立即查看和访问您的终端会话,并以任何可能的方式为您提供帮助。

如前所述,共享终端时也必须小心。 如果您不了解它是如何工作的,那么避免使用此工具可能是一个好主意。

资源:

  • 术语对 GitHub 存储库

相关阅读:

  • 如何使用 Streamhut 将您的终端共享到网络
  • Tmate – 即时与任何地方的任何人分享您的终端
  • Seashells – 将 Linux 命令的输出实时传送到 Web

命令行实用程序控制终端JavaScriptLinuxLinux 终端开源PythonShare TerminalTermpairWeb 服务