tmate 的可玩性很强.
1 | https://tmate.io |
tmate即teammates,是tmux的一个分支,并且和tmux使用相同的配置信息(i.e. tmate可与tmux共享~/.tmux.conf)。
tmate不仅是一个终端多路复用器,而且具有即时分享终端的能力。
它允许在单个屏幕中创建并操控多个终端,同时这些终端还能与其他人分享。总的来说,tmux支持的窗口(window)和窗格(pane)功能,tmate都支持。tmate的基本工作原理如下:
- 运行tmate时,会在后台创建一个连接到tmate.io(由 tmate 开发者维护的后台服务器)的ssh连接;
- tmate.io服务器的ssh密钥通过DH交换进行校验;
- 客户端通过本地ssh密钥进行认证;
- 连接创建后,本地tmux服务器会生成一个150位(不可猜测的随机字符)会话令牌;
- 队友能通过用户提供的SSH会话ID连接到tmate.io。
QQ群:397745473
谷歌的colab
1 | 1. 打开一个colab |
常用命令
1 | apt -y install tmate |
tmate启动之后,过几分钟后再执行tmate show-messages就会失效,那么需要重新获取连接信息的话,可以使用下面的脚本:
1 | #!/bin/bash |
访问控制
通常情况下,鉴于tmate生成的共享链接(ssh or web)在提供给他人访问的时候无需任何安全验证,而且此连接存储在tmate.io的服务器上,所以在使用此功能的时候请保持谨慎。
- 第一,只把共享链接发送给你所信任的人知晓;
- 第二,如无必要,请仅仅发送只读链接;
- 第三,一旦共享结束,请及时关闭会话。
那么,如何实现访问控制呢?
将你所信任的人B的公钥加入到你(A)的~/.ssh/authorized_keys文件中,
启动tmate使用如下命令:
1 | A$ tmate -a ~/.ssh/authorized_keys |
这样,只有B才能通过ssh访问你的共享链接。陌生人C的公钥没有保存到A的~/.ssh/authorized_keys文件中,于是会出现如下类似的拒绝访问信息。
1 | C$ ssh ERayHQKUPZkhtVufjjFTvtfjC@sgp1.tmate.io |
有关访问控制的更多内容,请访问https://tmate.io/的**Access control**一节。
特别提示:一旦使用了基于文件authorized_keys的访问控制,就不能使用基于web的连接方式,也就是说,只能使用ssh进行连接。
QQ群:397745473