Tmate – 立即将您的终端分享给任何地方的任何人

有许多流行的远程桌面共享程序(例如 Teamviewer、 鳄梨, 和 TigerVNC 等)您可以在需要与同事或朋友共享屏幕时使用。 这些程序将与其他人共享您的整个屏幕。 但是,如果你只想共享终端,你可以使用 伴侣. 它实际上是一个fork 多路复用器,一个终端多路复用器,可让您在单个终端中使用多个程序。 它们都可以同时安装在同一个系统上。 Tmate 类似于终端的 Teamviewer。

对于那些想知道的人,Tmate 将通过 SSH 建立一个安全连接到 tmate.io 网站并为每个会话生成一个随机 URL。 您可以与您信任的人共享 URL,只要连接处于活动状态,他们就可以像使用自己的终端一样使用终端。 最适合在共同项目上进行协作,或与开发团队一起调试项目,或通过远程网络获得技术支持。 Tmate 支持所有流行的操作系统,包括 GNU/Linux、Mac OS X 和 BSD 系统。

在本教程中,我将解释如何在类 Unix 操作系统中安装和使用 Tmate。

Tmate – 随时随地将您的终端即时分享给任何人

安装 Tmate

为了 Arch Linux,及其衍生产品如 Antergos、Manjaro Linux、Tmate 可在 AUR,因此您可以使用 AUR 帮助程序安装它,例如 .

$ yay -S tmate

为了 Fedora,运行以下命令安装Tmate。

$ sudo dnf install tmate

Ubuntu,以及它的衍生产品,如 Linux Mint,您可以使用以下 PPA 进行安装。

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:tmate.io/archive
$ sudo apt-get update
$ sudo apt-get install tmate

Ubuntu 18.04 LTS 版本,启用 Universe 存储库并安装 Tmate,如下所示。

$ sudo add-apt-repository universe
$ sudo apt install tmate

自由BSD

# pkg install tmate

OpenBSD:

# pkg_add tmate

推荐下载免费电子书:“5 天学习 Linux”

配置 SSH

在开始使用 Tmate 之前,我们需要创建一个 SSH 密钥对。 因为,tmate 程序建立了一个安全的 SSH 连接 tmate.io 使用本地 SSH 密钥对。

让我们使用命令创建 SSH 密钥对:

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sk/.ssh/id_rsa): 
Created directory '/home/sk/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/sk/.ssh/id_rsa.
Your public key has been saved in /home/sk/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DL3+rYrYtXYHxyFfDSRAsz4470wAQ+V/iW+sd5/fnA0 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| ....+.... |
| . o o .. |
| + o . o |
| = =..... .|
| S =+oo |
| . +.=+ |
| o oo+ E |
| o o.*.+o .o=|
| . o.oo*+.. +B|
+----[SHA256]-----+

如果您不创建,您将在终端窗口底部看到以下通知消息。

[Tmate] Reconnecting... (SSH keys not found. Run  'ssh-keygen' to create keys and try again.)

Tmate用法

创建 SSH 密钥对后,通过从终端运行以下命令来启动 Tmate:

$ tmate

如果您在创建 SSH 密钥对时输入了密码,您可能需要输入它来建立 Tmate 会话。

启动 Tmate 会话后,将连接 ID 与您想与之共享屏幕的任何人共享。 您可以与您信任的任意数量的人共享它。 它们不需要在同一个网络中,也不需要使用相同的操作系统。 他们甚至不必安装 tmate 或 tmux。

这就是 Tmate 会话的样子。

同桌会议

正如您在上面的屏幕截图中看到的,屏幕底部有一个 SSH 会话 ID(一串随机字符)。 只需复制并与他人分享即可进行连接。 请注意,此 ID 将在几秒钟后消失。 但是,您仍然可以使用以下命令查看会话 ID:

$ tmate show-messages

示例输出为:

Fri Aug 11 17:18:48 2017 [tmate] Connecting to ssh.tmate.io...
Fri Aug 11 17:18:49 2017 [tmate] Note: clear your terminal before sharing readonly access
Fri Aug 11 17:18:49 2017 [tmate] web session read only: https://tmate.io/t/ro-UVgrzHg2BVanPXZnt6JtlpU3V
Fri Aug 11 17:18:49 2017 [tmate] ssh session read only: ssh [email protected]
Fri Aug 11 17:18:49 2017 [tmate] web session: https://tmate.io/t/LVWgMSX2wNhBLdrLfxtcX00rk
Fri Aug 11 17:18:49 2017 [tmate] ssh session: ssh [email protected]

正如您在上面的输出中看到的,您可以通过 SSH 会话或使用相应会话 ID 的 Web 会话共享终端。 您还可以共享 只读会话 或者 读写会话.

非常非常重要的注意事项: 请注意,如果您提供了读写会话 ID(SSH 或 Web),则用户可以执行任何操作。 因为,你只是给了他你的系统访问权限 sudo 权利. 所以, 我强烈建议您提供只读会话 ID.

当您共享只读会话时,您不希望让远程用户查看其他读写会话 ID。 所以, 只需在将会话 ID 提供给用户之前清除终端.

通过 SSH 会话连接

对于希望通过 SSH 会话共享终端的用户,请将 SSH 会话 ID 提供给远程用户。

为了 example,远程用户输入以下命令以从他们的系统访问只读 Tmate 会话。

$ ssh [email protected]

在只读会话中,远程用户只能查看您的终端。 他们不能运行任何命令。

要共享读写会话,命令是:

$ ssh [email protected]

现在,远程用户可以以读写模式访问您的终端。 这意味着他们可以在您的终端上运行任何命令。 他们在远程会话中输入的所有命令也可以从您的本地终端查看。

通过 Web 会话连接

对于那些想通过网络浏览器共享终端的人,只需将网络 URL 提供给其他人即可连接。

说为 example,为了分享读写,我会把这个 URL 给我的同事 – https://tmate.io/t/LVWgMSX2wNhBLdrLfxtcX00rk

当他们输入上述 URL 时,他们将看到以下屏幕。

Tmate 网络会话

我再次警告您,除非绝对必要,否则不要将读写会话 ID 提供给任何人。 仅与受信任的人共享读写会话。

建议阅读:

  • Reptyr – 将正在运行的进程从一个终端移动到另一个终端而不关闭它

在 tmate 会话下工作与 tmux 完全相同。 您可以将 tmate 视为可从任何地方访问的反向 ssh 隧道。 要退出会话,请键入 出口. 有关更多详细信息,请参阅手册页。

$ man tmate

资源:

建议阅读:

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