使用tmate快速分享你的终端会话
tmate 的意思是 teammates
,它是 tmux 的一个分支,并且使用相同的配置信息(例如快捷键配置,配色方案等)。它是一个终端多路复用器,同时具有即时分享终端的能力。它允许在单个屏幕中创建并操控多个终端,同时这些终端还能与其他同事分享。
你可以分离会话,让作业在后台运行,然后在想要查看状态时重新连接会话。tmate
提供了一个即时配对的方案,让你可以与一个或多个队友共享一个终端。
在屏幕的地步有一个状态栏,显示了当前会话的一些诸如 ssh 命令之类的共享信息。
tmate 是怎么工作的?
-
运行
tmate
时,会通过libssh
在后台创建一个连接到 tmate.io (由 tmate 开发者维护的后台服务器)的 ssh 连接。 -
tmate.io 服务器的 ssh 密钥通过 DH 交换进行校验。
-
客户端通过本地 ssh 密钥进行认证。
-
连接创建后,本地 tmux 服务器会生成一个 150 位(不可猜测的随机字符)会话令牌。
-
队友能通过用户提供的 SSH 会话 ID 连接到 tmate.io。
使用 tmate 的必备条件
由于 tmate.io
服务器需要通过本地 ssh 密钥来认证客户机,必须生成 SSH 密钥 key。 每个系统都要有自己唯一的 SSH 密钥。
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/munication/.ssh/id_rsa): 直接按下回车,
Created directory '/home/munication/.ssh'. 将key保存到默认的位置
Enter passphrase (empty for no passphrase): 输入自己的密码例如lisan
Enter same passphrase again: 重复输入刚才一样的密码
Your identification has been saved in /home/munication/.ssh/id_rsa.
Your public key has been saved in /home/munication/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CfxwbPFh45ZCG/qixBUxqXwOlD1Gedk9RAqIZAIXYZQ munication@develop
The key's randomart image is:
+---[RSA 3072]----+
|.oB=o====o++o |
| oEo+.B*oO.=o |
| o o*o* * . |
| .+..B + |
| o+. S |
| . ... |
| . |
| |
| |
+----[SHA256]-----+
如何安装 tmate
tmate
已经包含在某些发行版的官方仓库中,可以通过包管理器来安装。
$ pacman -S tmate
如何使用 tmate
成功安装后,打开终端然后输入下面命令,就会打开一个新的会话,如果刚才有密码,请输入密码,然后在屏幕底部,你能看到 SSH 会话的 ID。
$ tmate
要注意的是,SSH 会话 ID 会在几秒后消失,可以通过下面命令获取到这些详细信息。
$ tmate show-messages
tmate
的 show-messages
命令会显示 tmate 的日志信息,其中包含了该 ssh 连接内容。
现在,分享你的 SSH 会话 ID 给你的朋友或同事从而允许他们观看终端会话。除了 SSH 会话 ID 以外,你也可以分享 web URL。
另外你还可以选择分享的是只读会话还是可读写会话。
如何通过 SSH 连接会话
只需要在终端上运行你从朋友那得到的 SSH 终端 ID 就行了。类似下面这样。
$ ssh session: ssh 3KuRj95sEZRHkpPtc2y6jcokP@sg2.tmate.io
如何通过 Web URL 连接会话
打开浏览器然后访问朋友给你的 URL 就行了。像下面这样。
只需要输入 exit
就能退出会话了。