想通过安全网络与其他用户共享终端? tmate是您共享SSH会话的好帮手。
tmate是具有即时终端共享功能的终端多路复用器,即它可以与许多受信任的用户共享您的终端会话。它类似于多播的概念。所有收件人都可以通过 SSH 连接查看终端会话。
tmate实际上是Tmux的一个分支,Tmux是一种流行的终端多路复用器,可让您在单个终端中使用多个程序。它在终端窗口中为您提供一种IDE体验。
tmate是如何实现终端共享的?
在启动tmate时,它将首先建立与tmate.io网站的SSH(安全外壳)连接,该网站充当Internet上的服务器。建立连接后,将为每个会话生成一个随机SSH URL令牌。 SSH URL ID将显示在终端会话的底部。现在终端已准备好共享。
受信任的队友可以通过URL ID访问您的终端会话,并且只要连接处于活动状态就可以使用它。在我看来,tmate最好的应用是协助小组项目,或者和开发团队一起调试项目,或者在远程网络上获得技术支持。
如何在Linux中安装tmate?
tmate是一个流行的程序,因此它可以在大多数Linux发行版的默认存储库中使用。你所要做的就是使用你的Linux发行版的包管理器并安装它。
以下将列出一些示例。
在基于Debian和Ubuntu的Linux发行版中,使用以下命令:
$ sudo apt install tmate
对于Fedora,您可以使用以下命令:
$ sudo dnf install tmate
tmate在AUR中可用,因此您可以在Arch Linux中使用您最喜欢的AUR Helper:
# yaourt -S tmate
在openSUSE中,你可以zypper安装tmate:
$ sudo zypper in tmate
如何与tmate共享终端?
让我们看看使用tmate并与他人共享终端会话的步骤。
第1步:生成SSH密钥对
要使用tmate,我们需要创建一个 SSH 密钥对。 tmate程序首先使用该SSH密钥对建立主机与 tmate.io网站的安全SSH连接。
此外,每台尝试连接到主机终端的客户端机器的身份验证也是由tmate.io服务器通过相同的ssh密钥进行的。因此,每个系统都应该生成其SSH密钥。
使用此命令生成ssh-key:
# ssh-keygen -t rsa
第2步:在主机系统上使用tmate
在将使用终端会话的系统上,打开终端并在终端中输入“tmate”命令。
# tmate
Tip: if you wish to use tmate only for remote access, run: tmate -F [0/0]
To see the following messages again, run in a tmate session: tmate show-messages
Press <q> or <ctrl-c> to continue
---------------------------------------------------------------------
Connecting to ssh.tmate.io...
Note: clear your terminal before sharing readonly access
web session read only: https://tmate.io/t/ro-U7eMCRgA8ZbbdetRE7xYBv4ZA
ssh session read only: ssh ro-U7eMCRgA8ZbbdetRE7xYBv4ZA@sfo2.tmate.io
web session: https://tmate.io/t/sJXHQK4GBn7FZB73uXebWF459
ssh session: ssh sJXHQK4GBn7FZB73uXebWF459@sfo2.tmate.io
tmate会生成完全访问和只读两种会话,每个会话都有自己的ID。以上例子中会话ID分别是sJXHQK4GBn7FZB73uXebWF459(完全访问)和ro-U7eMCRgA8ZbbdetRE7xYBv4ZA(只读访问)
按下q键或ctrl-c组合键,会话ID界面将消失。而您需要此会话ID,以便其他人可以查看您的会话。
要查找tmate会话ID,请使用以下命令:
# tmate show-messages
Sat Jun 18 19:21:04 2022 [tmate] Connecting to ssh.tmate.io...
Sat Jun 18 19:21:07 2022 [tmate] Note: clear your terminal before sharing readonly access
Sat Jun 18 19:21:07 2022 [tmate] web session read only: https://tmate.io/t/ro-U7eMCRgA8ZbbdetRE7xYBv4ZA
Sat Jun 18 19:21:07 2022 [tmate] ssh session read only: ssh ro-U7eMCRgA8ZbbdetRE7xYBv4ZA@sfo2.tmate.io
Sat Jun 18 19:21:07 2022 [tmate] web session: https://tmate.io/t/sJXHQK4GBn7FZB73uXebWF459
Sat Jun 18 19:21:07 2022 [tmate] ssh session: ssh sJXHQK4GBn7FZB73uXebWF459@sfo2.tmate.io
第3步:访问tmate会话
与您信任的朋友共享SSH会话ID,他们可以在自己的终端或web浏览器中使用此命令访问您的终端。
终端下完全访问,输入以下命令:
$ ssh sJXHQK4GBn7FZB73uXebWF459@sfo2.tmate.io
终端下只读访问,输入以下命令:
$ ssh ro-U7eMCRgA8ZbbdetRE7xYBv4ZA@sfo2.tmate.io
web浏览器访问,需要在浏览器地址栏中输入: https://tmate.io/t/sJXHQK4GBn7FZB73uXebWF459(完全访问)或者https://tmate.io/t/ro-U7eMCRgA8ZbbdetRE7xYBv4ZA(只读访问)
注意:默认情况下,tmate允许对共享终端会话进行读写访问。这意味着连接到您的会话的任何人都可以在您的终端中运行命令。
如果您不希望这样,您可以共享只读会话ID。如果您查看show-messages命令的输出,您会注意到有几个会话ID。您可以在那里找到只读会话ID。
第4步:结束tmate会话
在主机上使用“exit”命令退出tmate会话。
$ exit
可还喜欢tmate和tmux?
由于tmate基于tmux,您可以在tmate终端会话中使用所有tmux命令。这对Linux高级用户非常有用。
而共享会话的用途还是比较多的,比如协作开发、一对一或一对多的教学演示等,另外您还有哪些应用场景也可以与我多交流。:)