Tmate-随时随地与任何人共享终端
当需要与同事或者朋友共享 Screen时,可以使用许多流行的远程桌面共享程序(例如Teamviewer,鳄梨酱和TigerVNC等)。
这些程序会将整个 Screen共享给其他人。
但是,如果我们只想共享终端,则可以使用Tmate。
它实际上是Tmux的一个分支,它是一个终端多路复用器,使我们可以在一个终端中使用多个程序。
它们都可以同时安装在同一系统上。
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中可用,因此我们可以使用Yay等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
在FreeBSD上:
# pkg install tmate
OpenBSD的:
# pkg_add tmate
配置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 Hyman@theitroad 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.)
配合使用
创建SSH密钥对后,通过从终端运行以下命令来启动Tmate:
$tmate
如果在创建SSH密钥对时输入了密码,则可能需要输入密码以建立Tmate会话。
启动Tmate会话后,与要与之共享 Screen的任何人共享连接ID。
我们可以与我们信任的任何人共享它。
他们不必位于同一网络中,也不必使用相同的OS。
他们甚至不必安装tmate或者tmux。
这就是Tmate会话的样子。
如我们在上面的 Screen截图中所见,在 Screen底部有一个SSH会话ID(一串随机字符)。
只需复制并与他人共享即可进行连接。
请注意,此ID会在几秒钟后消失。
但是,我们仍然可以使用以下命令查看会话ID:
$tmate show-messages
输出示例为:
Fri Aug 11 17:18:48 2016 [tmate] Connecting to ssh.tmate.io... Fri Aug 11 17:18:49 2016 [tmate] Note: clear your terminal before sharing readonly access Fri Aug 11 17:18:49 2016 [tmate] web session read only: https://tmate.io/t/ro-UVgrzHg2BVanPXZnt6JtlpU3V Fri Aug 11 17:18:49 2016 [tmate] ssh session read only: ssh Hyman@theitroad Fri Aug 11 17:18:49 2016 [tmate] web session: https://tmate.io/t/LVWgMSX2wNhBLdrLfxtcX00rk Fri Aug 11 17:18:49 2016 [tmate] ssh session: ssh Hyman@theitroad
如上面的输出所示,我们可以使用相应的会话ID通过SSH会话或者Web会话共享终端。
我们也可以共享只读会话或者读写会话。
非常非常重要的说明:请注意,如果我们提供了读写会话ID(SSH或者Web),则用户可以执行任何操作。
因为,我们只是给他提供了具有sudo权限的系统访问权限。
因此,我强烈建议我们提供只读会话ID。
当我们共享只读会话时,我们不想让远程用户查看其他读写会话ID。
因此,在将会话ID提供给用户之前,只需清除终端即可。
通过SSH会话连接
对于那些想通过SSH会话共享终端的用户,请将SSH会话ID提供给远程用户。
例如,远程用户输入以下命令以从其系统访问只读Tmate会话。
$ssh Hyman@theitroad
在只读会话中,远程用户只能查看终端。
他们无法运行任何命令。
要共享读写会话,命令为:
$ssh Hyman@theitroad
现在,远程用户可以以读写模式访问终端。
这意味着他们可以在终端上运行任何命令。
他们在远程会话中输入的所有命令也可以从本地终端查看。
通过网络会话进行连接
对于那些想要通过网络浏览器共享终端的人,只需将网络URL提供给其他人即可连接。
例如,要共享读写,我会将这个URL提供给我的同事https://tmate.io/t/LVWgMSX2wNhBLdrLfxtcX00rk
当他们输入上述URL时,将看到以下 Screen。
再次提醒我们,除非绝对必要,否则请勿将读写会话ID提供给任何人。
仅与受信任的人共享读写会话。
建议阅读:
- Reptyr –将正在运行的进程从一个终端移到另一个终端而无需关闭它
在tmate会话下工作与tmux完全相同。
我们可以将tmate视为可从任何位置访问的反向ssh隧道。
要退出会话,请键入exit。