使用 tmate 分享你的终端会话

tmate 有什么用?它可以让你在需要帮助时向你的朋友们求助。

什么是 tmate?

tmate 的意思是 teammates,它是 tmux 的一个分支,并且使用相同的配置信息(例如快捷键配置,配色方案等)。它是一个终端多路复用器,同时具有即时分享终端的能力。它允许在单个屏幕中创建并操控多个终端,同时这些终端还能与其他同事分享。

你可以分离会话,让作业在后台运行,然后在想要查看状态时重新连接会话。tmate 提供了一个即时配对的方案,让你可以与一个或多个队友共享一个终端。

在屏幕的地步有一个状态栏,显示了当前会话的一些诸如 ssh 命令之类的共享信息。

(adsbygoogle = window.adsbygoogle || []).push({});

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 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/magi/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/magi/.ssh/id_rsa.
Your public key has been saved in /home/magi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:3ima5FuwKbWyyyNrlR/DeBucoyRfdOtlUmb5D214NC8 magi@magi-VirtualBox
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|           .     |
|      . . =   o  |
|     *ooS= . + o |
|  . =.@*o.o.+ E .|
|   =o==B++o  = . |
|  o.+*o+..    .  |
| ..o+o=.         |
+----[SHA256]-----+

如何安装 tmate

tmate 已经包含在某些发行版的官方仓库中,可以通过包管理器来安装。

对于 Debian/Ubuntu,可以使用 apt-get 命令或者 apt 命令来安装。

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

你也可以从官方仓库中安装 tmate。

$ sudo apt-get install tmate

对于 Fedora,使用 DNF 命令来安装。

$ sudo dnf install tmate

如何使用 tmate

成功安装后,打开终端然后输入下面命令,就会打开一个新的会话,在屏幕底部,你能看到 SSH 会话的 ID,显示效果就像运行 tmux 一样。

$ tmate

要注意的是,SSH 会话 ID 会在几秒后消失,不过不要紧,你可以通过下面命令获取到这些详细信息。

$ tmate show-messages

tmate 的 show-messages 命令会显示 tmate 的日志信息,其中包含了该 ssh 连接内容。

$ tmate show-messages
Wed Dec 6 10:27:58 2017 [tmate] Connecting to ssh.tmate.io...
Wed Dec 6 10:27:59 2017 [tmate] Note: clear your terminal before sharing readonly access
Wed Dec 6 10:27:59 2017 [tmate] web session read only: https://tmate.io/t/ro-Jck9ufuVN89c7DPK2FFkGQMxV
Wed Dec 6 10:27:59 2017 [tmate] ssh session read only: ssh ro-Jck9ufuVN89c7DPK2FFkGQMxV@sg2.tmate.io
Wed Dec 6 10:27:59 2017 [tmate] web session: https://tmate.io/t/3zSi6McGj5rkeoWIKMgumWrGr
Wed Dec 6 10:27:59 2017 [tmate] ssh session: ssh 3zSi6McGj5rkeoWIKMgumWrGr@sg2.tmate.io

现在,分享你的 SSH 会话 ID 给你的朋友或同事从而允许他们观看终端会话。除了 SSH 会话 ID 以外,你也可以分享 web URL。

另外你还可以选择分享的是只读会话还是可读写会话。

如何通过 SSH 连接会话

只需要在终端上运行你从朋友那得到的 SSH 终端 ID 就行了。类似下面这样。

$ ssh session: ssh 3zSi6McGj5rkeoWIKMgumWrGr@sg2.tmate.io

如何通过 Web URL 连接会话

打开浏览器然后访问朋友给你的 URL 就行了。像下面这样。

只需要输入 exit 就能退出会话了。

[Source System Output]
[exited]
[Remote System Output]
[server exited]
Connection to sg2.tmate.io closed by remote host。
Connection to sg2.tmate.io closed。

本文参考: https://www.2daygeek.com/ 作者:[Magesh Maruthamuthu]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BestSDK

REST API 安全设计指南

REST API 安全设计指南。REST的全称是REpresentational State Transfer,它利用传统Web特点,提出提出一个既适于客户端应...

99480
来自专栏搜云库

ZooKeeper 可视化监控 zkui

概述 一、简介zkui它提供了一个管理界面,可以针对zookeepr的节点值进行CRUD操作,同时也提供了安全认证。 二、下载安装 1、下载地址 https:...

34750
来自专栏技术之路

sql 2000 无法连接远程数据库 sqlserver不存在或访问被拒绝 解决方案

一 看ping 服务器IP能否ping通。    这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当...

41190
来自专栏漫漫前端路

HTTP协议 - 从URI开始

URI, 既是统一资源标识符号,每个 Web 服务器都有一个 URI 标识符,它在世界范围内唯一标识并定位信息资源。

17540
来自专栏我是攻城师

IO设计模式之Reactor和Proactor

上面文章中,我们提到不同的操作系统实现的io策略可能不一样,即使是同一个操作系统也可能存在多重io策略,常见如linux上的select,poll,epoll,...

43410
来自专栏Python中文社区

使用python实现RESTful API服务器端的思路

最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了。 REST的六个特性 Client...

65180
来自专栏安恒信息

预警 | Struts2 REST插件存在远程代码执行漏洞(CVE-2017-9805)

漏洞描述 Struts2 是 Apache 软件基金会负责维护的一个基于MVC设计模式的 Web 应用框架开源项目。 Struts2的REST插件使用带有XSt...

381140
来自专栏码洞

服务发现的基本原理

服务发现并没有怎样的高深莫测,它的原理再简单不过。只是市面上太多文章将服务发现的难度妖魔化,读者被绕的云里雾里,顿觉自己智商低下不敢高攀。

14620
来自专栏cloudskyme

三步学会用spring开发OSGI——(第一步:环境篇)

Spring-DM是什么 Spring-DM 指的是Spring Dynamic Modules. dm Server 是一个完全模块化部署的,基于OSGi的J...

39160
来自专栏Vamei实验室

Linux开机启动(bootstrap)

计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。然而,计算机开机又是个异常脆弱的过程,我们满心期望的...

28380

扫码关注云+社区

领取腾讯云代金券