0%

自建 tmate 服务

tmate 是什么

tmate 可以用于远程分享终端,实乃远程协同办公之神器。

自主部署

通常大家都是使用 tmate.io 的服务,不过墙外的服务, 300 多ms 的延时,会有明显可感知的延时,以及不可靠因素。

近期花了些时间,自己部署了一套 tmate 服务,把过程记录一下。

服务端

tmate 有提供 docker 镜像,所以部署还是挺方便的。

  1. 生成 keys

    1
    2
    3
    git clone git@github.com:tmate-io/tmate-ssh-server.git
    cd tmate-ssh-server
    ./create_keys.sh

    会在当前目录生成 keys 目录,并且会得到如下的输出,这些可以先记录下来,后续会用到。

    1
    2
    3
    4
    set -g tmate-server-host localhost
    set -g tmate-server-port 22
    set -g tmate-server-rsa-fingerprint SHA256:JOhvYoiBO0kVltwqKHTgKVCfvyajWV/cGwNXSyTNRcE
    set -g tmate-server-ed25519-fingerprint SHA256:+N/UZ8BNfTVNoOQjH4yEe0GoTFpapu/I0G4c6RI7HWo
  2. 启动 docker 服务

    1
    2
    3
    4
    5
    6
    7
    8
    docker run -d --rm \
    -p 8022:8022 \
    -v `pwd`/keys:/etc/tmate/keys \
    --env SSH_KEYS_PATH='/etc/tmate/keys' \
    --env SSH_HOSTNAME=tmate.uncledou.site \
    --env SSH_PORT_LISTEN=8022 \
    --cap-add SYS_ADMIN \
    tmate/tmate-ssh-server

    就这么简单,tmate 的服务端就部署好了。

客户端

  1. 安装 tmate 软件
    tmate 在很多主流仓库里都有,可以先尝试直接用当前系统的 aptyum 之类的安装。 如果不幸没有的话,也可以用 tmate 编译好的二进制,在 github release 里可以下载到二进制包,比如常见的 x86_64 机器上,就是这个 tmate-2.4.0-static-linux-amd64.tar.xz
  2. 配置 .tmate.conf
    把客户端部署第一步的输出,写入到本机的 ~/.tmate.conf 文件。注意其中的 hostport 需要改成自助部署的,比如我这里是这样的:
    1
    2
    3
    4
    set -g tmate-server-host tmate.uncledou.site
    set -g tmate-server-port 8022
    set -g tmate-server-rsa-fingerprint SHA256:JOhvYoiBO0kVltwqKHTgKVCfvyajWV/cGwNXSyTNRcE
    set -g tmate-server-ed25519-fingerprint SHA256:+N/UZ8BNfTVNoOQjH4yEe0GoTFpapu/I0G4c6RI7HWo

开始飞吧

至此 tmate 客户端就安装配置好了,执行 tmate 命令就可以得到类似的输出:

1
2
3
4
5
6
7
8
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 tmate.uncledou.site...
Note: clear your terminal before sharing readonly access
ssh session read only: ssh -p8022 ro-RyrBkE6v5rAhpqP6FN6mCWgm2@tmate.uncledou.site
ssh session: ssh -p8022 XtydPFjTpbaz8eXxB77RGZeNZ@tmate.uncledou.site

对方执行 ssh -p8022 XtydPFjTpbaz8eXxB77RGZeNZ@tmate.uncledou.site ,即可开始与你一起共享这个终端了。

如果你不想用 tmate.io 的服务,也不想自己部署,也可以使用我这套部署好的。按照我的部署,从客户端开始即可。

go ahead, happy hacking :)