Skip to content

tssh — 比 OpenSSH 更好用的 SSH 客户端

tssh(trzsz-ssh)是一个完全兼容 OpenSSH 的 SSH 客户端替代品,在保持零学习成本的前提下,提供了服务器搜索、密码记忆、文件传输、批量登录、UDP 弱网模式等一系列开发者高频刚需功能。

为什么需要 tssh?

日常用 SSH 管理服务器,你是不是也踩过这些坑?

  • 服务器一多,别名记不住 — 每次都要翻 .ssh/config
  • 有些机器只能用密码登录 — OpenSSH 原生不支持记住密码
  • 传文件要另开 SFTP 窗口 — 来回切换很烦
  • 要同时登录一批机器执行命令 — 只能手动一个个连
  • Wi-Fi 切换或休眠唤醒就断连 — 会话全丢,心态爆炸

tssh 就是为了解决这些问题而生。

核心特性一览

特性说明
内置 TUI 登录界面搜索、选择服务器,不用记别名
记住密码加密存储密码、私钥 passphrase、自动交互
文件传输内置 trzsz/rz/sz,拖拽上传下载,无需另开窗口
批量登录多选服务器,分屏/新 Tab/新窗口同时登录
UDP 弱网模式配合 tsshd,切换网络、休眠唤醒不掉线
完全兼容 OpenSSH配置、参数、密钥文件全部通用,零迁移成本
跨平台Linux / macOS / Windows / ChromeOS
自动交互类似 expect,支持 TOTP、动态密码、条件分支

安装方法

Linux

Ubuntu / Debian(添加 PPA):

bash
sudo apt update && sudo apt install software-properties-common
sudo add-apt-repository ppa:trzsz/ppa && sudo apt update
sudo apt install tssh

Fedora / CentOS / RHEL:

bash
sudo dnf copr enable @trzsz/trzsz
sudo dnf install tssh

ArchLinux:

bash
yay -S tssh

直接下载 deb/rpm 包安装:

GitHub ReleasesGitee 发行版 下载对应包:

bash
sudo dpkg -i tssh_*.deb        # Debian/Ubuntu
sudo rpm -i tssh_*.rpm         # Fedora/CentOS

macOS

bash
brew install trzsz-ssh

Windows

bash
scoop install tssh       # 推荐
winget install tssh      # 或
choco install tssh       # 或

Go 直接安装

bash
go install github.com/trzsz/trzsz-ssh/cmd/tssh@latest

快速上手

1. 配置服务器

tssh 直接复用 ~/.ssh/config,和 OpenSSH 共享配置:

ini
Host my-server
    HostName 192.168.1.100
    User root
    Port 22

2. 启动 TUI 登录界面

直接运行:

bash
tssh

tssh TUI

  • / 搜索服务器
  • /j/k 选择
  • Enter 登录

3. 记住密码

有些服务器只能用密码登录,tssh 可以加密记住:

bash
tssh --enc-secret
# 输入密码,得到一串密文

然后在配置中写入:

ini
Host my-server
    #!! encPassword 756b17766f45bdc44c37f811db9990b0880318d5f00f6531b15e068ef1fde2666550

#!! 前缀的作用:tssh 会识别它为有效配置,而标准 ssh 会把它当成注释,互不冲突。

4. 文件传输

登录后直接使用 trz 上传、tsz 下载:

bash
# 上传
trz

# 下载指定文件
tsz /path/to/file

拖拽文件到终端窗口也能上传(需配置 EnableDragFile yes)。

TUI 登录界面详解

无参数运行 tssh 即打开 TUI 登录界面,支持丰富的快捷键:

操作快捷键说明
确认登录Enter登录当前选中的服务器
退出Ctrl+C / Ctrl+Q / q退出 TUI
上移 / Ctrl+K / k往上移动光标
下移 / Ctrl+J / j往下移动光标
翻页PageUp / Ctrl+B / b上一页
翻页PageDown / Ctrl+F / f下一页
搜索/切换搜索模式
多选Space / Ctrl+X / x选中/取消当前服务器
全选Ctrl+A / a全选当前页
反选Ctrl+O / o反选当前页
新窗口登录Ctrl+W / w批量登录到新窗口
新 Tab 登录Ctrl+T / t批量登录到新标签
分屏登录Ctrl+P / p批量分屏登录

主题风格

~/.tssh.conf 中配置主题:

ini
PromptThemeLayout = simple   # tiny | simple | table

支持自定义颜色,例如:

json
PromptThemeColors = {"active_host": "magenta|bold", "inactive_host": "magenta"}

记住密码与自动交互

记住密码

除了上文用 #!! encPassword 加密存储,也支持明文:

ini
Host test*
    Password 111111

建议设置配置文件权限:chmod 600 ~/.ssh/config ~/.ssh/password

记住私钥 Passphrase

ini
Host my-server
    IdentityFile /path/to/id_rsa
    #!! encPassphrase 6f419911555b0cdc84549ae791ef69f654118d734bb4351de7e83163726ef46d176a

自动交互(类似 expect)

适合 Complex 登录场景(跳板机、MFA 等):

ini
Host auto
    #!! ExpectCount 2
    #!! ExpectTimeout 30
    #!! ExpectPattern1 *assword
    #!! ExpectSendPass1 d7983b4a8ac204bd...    # tssh --enc-secret 生成的密文
    #!! ExpectPattern2 hostname*$
    #!! ExpectSendText2 echo welcome\\r

TOTP 双因子认证

ini
Host totp-server
    #!! ExpectCount 1
    #!! ExpectPattern1 token:
    #!! ExpectSendTotp1 xxxxx                  # TOTP Secret(扫二维码获得)

外部密码管理器

支持对接 gopass、pass、1Password、Bitwarden、macOS 钥匙串等:

ini
Host server1
    #!! PasswordCommand gopass show -o ssh/%n
Host server2
    #!! PasswordCommand op read "op://Vault/ssh-%n/password"

文件传输

trzsz(推荐)

服务器需安装 trzsz。tssh 支持以下方式:

拖拽上传:~/.ssh/config 中配置:

ini
Host *
    EnableDragFile yes

命令行上传/下载:

bash
# 上传文件到服务器
tssh --upload-file /path/to/file1 --upload-file /path/to/dir2 myserver 'trz -d /tmp/'

# 从服务器下载文件
tssh -t --client --download-path /tmp/ myserver 'tsz -d /path/to/file1'

scp/sftp 集成

使用 -S tssh 让 scp/sftp 也享受记忆密码和 UDP 通道:

bash
alias tscp='scp -S tssh'
alias tsftp='sftp -S tssh'

批量登录

适用于 tmux、iTerm2、Windows Terminal:

  1. 在 TUI 界面用 Space 多选服务器
  2. p 分屏登录、w 新窗口、t 新 Tab

批量执行命令:

bash
tssh -t -o RemoteCommand='ping -c3 example.com ; bash -l'

UDP 弱网模式

配合服务端 tsshd,实现类似 mosh 的会话保持能力,且完整支持 SSH 端口转发和 ProxyJump。

服务端安装 tsshd:

bash
tssh --install-tsshd myserver

客户端连接:

bash
tssh --udp myserver

或者在配置中启用:

ini
Host myserver
    #!! UdpMode yes

UDP 模式下,切换 Wi-Fi、笔记本合盖唤醒都不会断连,尤其适合移动办公场景。

个性配置

所有个性配置集中在 ~/.tssh.conf

ini
# SSH 配置路径
ConfigPath = ~/.ssh/config

# 扩展配置路径(放密码等敏感信息)
ExConfigPath = ~/.ssh/password

# 默认上传/下载路径
DefaultUploadPath = ~/Downloads
DefaultDownloadPath = ~/Downloads

# 拖拽上传命令
DragFileUploadCommand = trz -y

# 进度条颜色
ProgressColorPair = B14FFF 00FFA3

# 主题
PromptThemeLayout = simple

# 每页显示的服务器数
PromptPageSize = 10

# 默认进入搜索模式
PromptDefaultMode = search

# 自定义光标和选中图标
PromptCursorIcon = 🧨
PromptSelectedIcon = 🍺

# 终端标题显示 RTT
SetTerminalTitle = rtt

# 使用 ssh -G 解析 OpenSSH 配置(支持 Match 规则)
UseOpenSSHConfig = yes

分组标签

服务器太多时,用分组标签快速筛选:

ini
Host web-*
    #!! GroupLabels web production
Host db-*
    #!! GroupLabels database production
Host dev-*
    #!! GroupLabels dev

在 TUI 中按 / 输入标签名,回车锁定,即可只显示该组的服务器。

实用小技巧

一键安装服务器端工具

bash
tssh --install-trzsz myserver    # 安装 trzsz 文件传输
tssh --install-tsshd myserver    # 安装 tsshd UDP 服务

快速添加新服务器

bash
tssh --new-host

在 TUI 界面填写信息,保存后可立即登录。

DNS SRV 支持

家里多台机器共享一个公网 IP?配置 SRV 记录:

ini
Host myserver
    #!! DnsSrvName myhost.mydomain.com

替换默认 ssh

想直接用 ssh 命令享受 tssh 的功能:

bash
sudo ln -sv $(which tssh) /usr/local/bin/ssh

之后 ssh 就是 tssh,所有参数和配置不变。

写在最后

tssh 完全开源(MIT 协议),Go 语言编写,单一二进制分发,无外部依赖。它的设计哲学是"渐进增强"——你完全不需要改变现有工作流,直接把它当成 ssh 用就好。当需要更多功能时,tssh 随时 ready。

推荐

如果你管理 5 台以上服务器、或者遇到过"密码记不住、断了连不上、传文件麻烦"这些场景,tssh 值得一试。

最近更新