ssh终端共享之tmate介绍

tmate 是一个基于 tmux远程终端共享工具,主要用于远程协作、运维支持、远程开发调试等场景。它允许你快速将当前终端会话通过 SSH 或 Web URL 分享给他人,他们可以即时连接并与你一起操作终端。


tmate 的核心功能

功能 说明
🖥️ 终端共享 允许他人通过 SSH 或 Web URL 连接你的终端。
🔒 安全连接 默认使用加密的 SSH 通道,安全可靠。
👥 多人协作 多人可以同时连接同一个 tmate 会话。
⏳ 会话保持 类似 tmux,会话断开后不丢失。
🌍 Web 访问 提供一个基于浏览器的终端共享链接。

安装方式

Ubuntu / Debian

1
2
sudo apt update
sudo apt install tmate

CentOS / RHEL

1
2
sudo yum install epel-release
sudo yum install tmate

MacOS

1
brew install tmate

基本使用命令

启动 tmate 会话

1
tmate

这将自动创建一个新的 tmate 会话,并显示 SSH/Web 连接地址。

查看当前共享地址

1
tmate show-messages

输出类似:

SSH session: ssh abcdef1234567890@nyc1.tmate.io
Web session: https://tmate.io/t/abcdef1234567890

获取 SSH 地址

1
tmate display -p '#{tmate_ssh}'

获取 Web 终端地址

1
tmate display -p '#{tmate_web}'

配置文件(可选)

默认配置文件路径为:~/.tmate.conf

示例配置:

1
2
3
4
set -g tmate-server-host "sgp1.tmate.io"
set -g tmate-server-port 22
set -g tmate-session-name "mydev"
set -g status off

远程用户如何连接

  1. SSH 用户:

    1
    ssh abcdef1234567890@nyc1.tmate.io
  2. 浏览器用户:
    打开链接,例如:

    https://tmate.io/t/abcdef1234567890
    

安全性说明

  • tmate 会话加密传输(基于 SSH)。
  • 默认不暴露 root shell,除非你主动开启。
  • Web 访问者默认只能只读(可配置为可写)。

⚙️ 常见使用场景

场景 描述
DevOps 支持 让开发或运维实时进入你的终端诊断问题。
远程教学 实时展示终端操作给学员。
自动化调试 在 CI/CD 脚本失败时注入 tmate,供远程排查。

CI/CD 示例用法(比如 GitHub Actions):

1
2
3
4
5
- name: Setup tmate session on failure
if: failure()
run: |
sudo apt install -y tmate
tmate -F