trzsz-ssh ( tssh ) 设计为 ssh 客户端的直接替代品,提供与 openssh 完全兼容的基础功能,同时实现其他有用的扩展功能。
trzsz-ssh ( tssh ) 与 tsshd 一起,适用于高延迟的弱网连接,切换网络、休眠与唤醒都不会掉线,让 ssh 会话永远保持。
服务器太多,记不住所有别名,tssh 内置登录界面,支持搜索和选择服务器登录。
tssh 登录服务器后,内置支持 trzsz ( trz / tsz ) 工具,传文件无需另外新开窗口。
有时需要同时登录一批机器,tssh 支持多选并批量登录,同时支持执行预设的命令。
有些服务器不支持公钥登录,tssh 支持记住密码,支持自动交互,提升登录的效率。
在 Windows 中使用 tssh 代替 trzsz ssh,可以解决 trz 上传速度很慢的问题。
tssh 与 tsshd 类似于 mosh,解决了部分 mosh 的问题,例如 SSH 转发和 ProxyJump 等。
客户端安装 trzsz-ssh ( tssh ) 的方法如下( 任选其一 ):
scoop install tssh / winget install tssh / choco install tssh
sh
scoop install tssh
sh
winget install tssh
sh
choco install tssh
brew install trzsz-ssh
sh
brew install trzsz-ssh
sudo apt install tssh
```sh sudo apt update && sudo apt install software-properties-common sudo add-apt-repository ppa:trzsz/ppa && sudo apt update
sudo apt install tssh ```
sudo apt install tssh
```sh sudo apt install curl gpg curl -s 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x7074ce75da7cc691c1ae1a7c7e51d1ad956055ca' \ | gpg --dearmor -o /usr/share/keyrings/trzsz.gpg echo 'deb [signed-by=/usr/share/keyrings/trzsz.gpg] https://ppa.launchpadcontent.net/trzsz/ppa/ubuntu jammy main' \ | sudo tee /etc/apt/sources.list.d/trzsz.list sudo apt update
sudo apt install tssh ```
sudo yum install tssh
国内推荐使用 wlnmp 源,安装 tssh 只需要添加 wlnmp 源( 配置 epel 源不是必须的 ):
```sh curl -fsSL "https://sh.wlnmp.com/wlnmp.sh" | bash
sudo yum install tssh ```
也可使用 gemfury 源( 只要网络通,所有操作系统通用 )
```sh echo '[trzsz] name=Trzsz Repo baseurl=https://yum.fury.io/trzsz/ enabled=1 gpgcheck=0' | sudo tee /etc/yum.repos.d/trzsz.repo
sudo yum install tssh ```
ArchLinux 可用 yay 安装
yay -S tssh
sh
yay -Syu
yay -S tssh
crew install tssh
sh
crew install tssh
go install github.com/trzsz/trzsz-ssh/cmd/tssh@latest
```sh # 最新发布版本 go install github.com/trzsz/trzsz-ssh/cmd/tssh@latest
# 最新开发版本( main 分支 ) go install github.com/trzsz/trzsz-ssh/cmd/tssh@main ```
安装后,tssh 程序一般位于 ~/go/bin/ 目录下( Windows 一般在 C:\Users\your_name\go\bin\ )。
sudo make install
sh
git clone --depth 1 https://github.com/trzsz/trzsz-ssh.git
cd trzsz-ssh
make
sudo make install
下载并本地安装
```sh sudo apt install /tmp/tssh_*.deb
sudo dpkg -i /tmp/tssh_*.deb
sudo dnf install /tmp/tssh_*.rpm
sudo yum install /tmp/tssh_*.rpm
sudo rpm -i /tmp/tssh_*.rpm
tar zxvf tssh_.tar.gz && sudo cp tssh_/tssh /usr/bin/ ```
使用之前,需要配置好 ~/.ssh/config ( Windows 是 C:\Users\xxx\.ssh\config, xxx 换成用户名 )。
关于如何配置 ~/.ssh/config,请参考 openssh ( Match 中的 exec 暂时要参考下文配置 UseOpenSSHConfig 才支持 ),或参考 tssh wiki SSH基本配置。
直接无参数运行 tssh 命令就会打开登录界面,或者有除目标机器外的其他参数也会打开登录界面。
如果目标机器参数是 ~/.ssh/config 中别名的一部分,不能完全匹配某个别名,也会打开登录界面。
如果配置了 #!! HideHost yes,或者别名中含有 * 或 ? 通配符时,则不会显示在登录界面中。
tssh 支持很多快捷键,支持搜索,在 tmux、iTerm2 和 Windows Terminal 等中使用时支持多选。
| 操作 | 全局快捷键 | 非搜索快捷键 | 快捷键描述 |
|---|---|---|---|
| Confirm | Enter | 确认并登录 | |
| Quit/Exit | Ctrl+C Ctrl+Q | q Q | 取消并退出 |
| Move Prev | Ctrl+K Shift+Tab ↑ | k K | 往上移光标 |
| Move Next | Ctrl+J Tab ↓ | j J | 往下移光标 |
| Page Up | Ctrl+H Ctrl+U Ctrl+B PageUp ← | h H u U b B | 往上翻一页 |
| Page Down | Ctrl+L Ctrl+D Ctrl+F PageDown → | l L d D f F | 往下翻一页 |
| Goto Home | Home | g | 跳到第一行 |
| Goto End | End | G | 跳到最尾行 |
| EraseKeys | Ctrl+E | e E | 擦除搜索关键字 |
| TglSearch | / | 切换搜索功能 | |
| Tgl Help | ? | 切换帮助信息 | |
| TglSelect | Ctrl+X Ctrl+Space Alt+Space | Space x X | 切换选中状态 |
| SelectAll | Ctrl+A | a A | 全选当前页 |
| SelectOpp | Ctrl+O | o O | 反选当前页 |
| Open Wins | Ctrl+W | w W | 新窗口批量登录 |
| Open Tabs | Ctrl+T | t T | 新 Tab 批量登录 |
| Open Pane | Ctrl+P | p P | 分屏批量登录 |
tssh 支持多种主题风格,在 $XDG_CONFIG_HOME/tssh/tssh.conf ( 或 ~/.tssh.conf ) 中配置 PromptThemeLayout 选用。欢迎一起来创造更多更好看的。
每种主题风格都支持自定义颜色,在 $XDG_CONFIG_HOME/tssh/tssh.conf ( 或 ~/.tssh.conf ) 中配置 PromptThemeColors,只要配置非默认的颜色即可。
请为你喜欢的主题风格❤️投票❤️,得票数最高的主题风格将会在下个版本被设置为默认主题。
在 $XDG_CONFIG_HOME/tssh/tssh.conf ( 或 ~/.tssh.conf ) 中配置 PromptThemeLayout = tiny 选用 tiny 小巧风。

在 $XDG_CONFIG_HOME/tssh/tssh.conf ( 或 ~/.tssh.conf ) 中配置 PromptThemeColors,要求配置成一行。tiny 小巧风 支持以下配置项:
tiny 颜色配置项和默认值:
json
{
"help_tips": "faint",
"shortcuts": "faint",
"label_icon": "blue",
"label_text": "default",
"cursor_icon": "green|bold",
"active_selected": "green|bold",
"active_alias": "cyan|bold",
"active_host": "magenta|bold",
"active_group": "blue|bold",
"inactive_selected": "green|bold",
"inactive_alias": "cyan",
"inactive_host": "magenta",
"inactive_group": "blue",
"details_title": "default",
"details_name": "faint",
"details_value": "default"
}
tiny 支持的颜色枚举,可用 | 连接多个:
default
black
red
green
yellow
blue
magenta
cyan
white
bgBlack
bgRed
bgGreen
bgYellow
bgBlue
bgMagenta
bgCyan
bgWhite
bold
faint
italic
underline
在 $XDG_CONFIG_HOME/tssh/tssh.conf ( 或 ~/.tssh.conf ) 中配置 PromptThemeLayout = simple 选用 simple 简约风。

simple 简约风 支持的颜色配置项、默认值和颜色枚举,和 tiny 小巧风 完全相同,请参考前文。
在 $XDG_CONFIG_HOME/tssh/tssh.conf ( 或 ~/.tssh.conf ) 中配置 PromptThemeLayout = table 选用 table 表格风。

在 $XDG_CONFIG_HOME/tssh/tssh.conf ( 或 ~/.tssh.conf ) 中配置 PromptThemeColors,要求配置成一行。table 表格风 支持以下配置项:
table 颜色配置项和默认值:
json
{
"help_tips": "faint",
"shortcuts": "faint",
"table_header": "10",
"default_alias": "6",
"default_host": "5",
"default_group": "4",
"selected_icon": "2",
"selected_alias": "14",
"selected_host": "13",
"selected_group": "12",
"default_border": "8",
"selected_border": "10",
"details_name": "4",
"details_value": "3",
"details_border": "8"
}
help_tips 和 shortcuts 与前文 tiny 小巧风 相同。在服务器上要安装 trzsz,才能使用 trz / tsz 上传和下载,可任选其一安装:Go 版( ⭐ 推荐 )、Py 版、Js 版。
在 ~/.ssh/config 或 ExConfigPath 配置文件中,配置 EnableDragFile 为 Yes 启用拖拽上传功能。
Host *
# 如果配置在 ~/.ssh/config 中,可以加上 `#!!` 前缀,以兼容标准 ssh
EnableDragFile Yes
DragFileUploadCommand 配置为 trz -y :Host xxx
# 如果配置在 ~/.ssh/config 中,可以加上 `#!!` 前缀,以兼容标准 ssh
DragFileUploadCommand trz -y
如果只是想临时启用拖拽上传功能,可以在命令行中使用 tssh --dragfile 登录服务器。
在 ~/.ssh/config 或 ExConfigPath 配置文件中,配置 EnableTrzsz 为 No 禁用 trzsz 和 zmodem。
Host no_trzsz_nor_zmodem
# 如果配置在 ~/.ssh/config 中,可以加上 `#!!` 前缀,以兼容标准 ssh
EnableTrzsz No
--upload-file 参数在命令行中指定文件或目录直接上传,也可在服务器后面指定 trz 上传命令参数和保存路径,如:sh
tssh --upload-file /path/to/file1 --upload-file /path/to/dir2 xxx_server '~/.local/bin/trz -d /tmp/'
tsz 直接下载文件或目录到本地,可一并使用 --download-path 参数指定本地保存的路径,如:sh
tssh -t --client --download-path /tmp/ xxx_server 'tsz -d /path/to/file1 /path/to/dir2'

~/.ssh/config 或 ExConfigPath 配置文件中,配置 EnableZmodem 为 Yes 启用 rz / sz 功能。Host *
# 如果配置在 ~/.ssh/config 中,可以加上 `#!!` 前缀,以兼容标准 ssh
EnableZmodem Yes
DragFileUploadCommand 配置为 rz :Host xxx
# 如果配置在 ~/.ssh/config 中,可以加上 `#!!` 前缀,以兼容标准 ssh
EnableDragFile Yes
DragFileUploadCommand rz
lrzsz,Windows 可以从 lrzsz-win32 下载,解压并加到 PATH 环境变量中,也可以如下安装:scoop install lrzsz / choco install lrzsz / winget install lrzsz
如果只是想临时启用 rz / sz 传文件功能,可以在命令行中使用 tssh --zmodem 登录服务器。
关于 rz / sz 进度条,己传大小和传输速度会有一点偏差,它的主要作用只是指示传输正在进行中。
可使用 --upload-file 参数在命令行中指定文件直接上传,在服务器后面 cd 到保存路径再指定 rz 命令及参数即可,如:
sh
tssh --upload-file /path/to/file1 --upload-file /path/to/file2 xxx_server 'cd /tmp/ && rz -yeb'
sz 直接下载文件到本地,可一并使用 --download-path 参数指定本地保存的路径,如:sh
tssh -t --client --zmodem --download-path /tmp/ xxx_server 'sz /path/to/file1 /path/to/file2'
使用了 tssh 记住密码的功能,登录时不用手工输入密码了,scp 和 sftp 也一样可以不用手工输入密码。
使用了 tssh 的 UDP 模式,SSH 通讯走加密的 UDP 通道了,scp 和 sftp 也一样可以走加密的 UDP 通道。
只要 scp 和 sftp 使用 -S 选项指定 tssh,或者配置个 alias 即可使用 tssh 提供的一些功能,如:
sh
sftp -S tssh xxx
scp -S tssh xxx @xxx:/tmp/
alias tscp='scp -S tssh'
alias tsftp='sftp -S tssh'
支持在 iTerm2( 要开启 Python API,但不需要Allow all apps to connect ),tmux 和 Windows Terminal 中一次选择多台服务器,批量登录,并支持批量执行预先指定的命令。
按下 Space、Ctrl+X 等可以选中或取消当前服务器,若不能选中说明还不支持当前终端,请先运行 tmux。
按下 a 或 Ctrl+A 全选当前页所有机器,o 或 Ctrl+O 反选当前页所有机器,d 或 l 翻到下一页。
按下 p 或 Ctrl+P 以分屏的方式登录,w 或 Ctrl+W 以新窗口登录,t 或 Ctrl+T 以新 tab 登录。
tssh 不带参数启动可以批量登录服务器,若带 -o RemoteCommand 参数启动则可以批量执行指定的命令。支持执行指定命令之后进入交互式 shell,但 Windows Terminal 不支持分号 ;,可以用 |cat&& 代替。举例:
sh
tssh -t -o RemoteCommand='ping -c3 trzsz.github.io ; bash -l'
tssh -t -o RemoteCommand="ping -c3 trzsz.github.io |cat&& bash -l"

如果服务器数量很多,分组标签 GroupLabels 可以在按 / 搜索时,快速找到目标服务器。
按 / 输入分组标签后,回车可以锁定;再按 / 可以输入另一个分组标签,回车再次锁定。
在非搜索模式下,按 E 可以清空当前搜索标签;在搜索模式下按 Ctrl + E 也是同样效果。
支持在一个 GroupLabels 中以空格分隔,配置多个分组标签;支持配置多个 GroupLabels。
支持以通配符 * 的形式,在多个 Host 节点配置分组标签,tssh 会将所有的标签汇总起来。
# 以下 testAA 具有标签 group1 group2 label3 label4 group5,可以加上 `#!!` 前缀,以兼容标准 ssh
Host test*
#!! GroupLabels group1 group2
#!! GroupLabels label3
Host testAA
#!! GroupLabels label4 group5
expect 的自动交互功能,在登录服务器之后,自动匹配服务器的输出,然后自动输入。Host auto
#!! ExpectCount 2 # 配置自动交互的次数,默认是 0 即无自动交互
#!! ExpectTimeout 30 # 配置自动交互的超时时间(单位:秒),默认是 30 秒
#!! ExpectPattern1 *assword # 配置第一个自动交互的匹配表达式
# 配置第一个自动输入(密文),这是由 tssh --enc-secret 编码得到的字符串,tssh 会自动发送 \r 回车
#!! ExpectSendPass1 d7983b4a8ac204bd073ed04741913befd4fbf813ad405d7404cb7d779536f8b87e71106d7780b2
#!! ExpectPattern2 hostname*$ # 配置第二个自动交互的匹配表达式
#!! ExpectSendText2 echo tssh expect\r # 配置第二个自动输入(明文),需要指定 \r 才会发送回车
# 以上 ExpectSendPass? 和 ExpectSendText? 只要二选一即可,若都配置则 ExpectSendPass? 的优先级更高
ExpectPattern? 匹配之前,如果遇到可选的匹配则自动输入,用法如下:``` Host case #!! ExpectCount 1 # 配置自动交互的次数,默认是 0 即无自动交互 #!! ExpectPattern1 hostname*$ # 配置第一个自动交互的匹配表达式 #!! ExpectSendText1 ssh xxx\r # 配置第一个自动输入,也可以换成 ExpectSendPass1 然后配置密文 #!! ExpectCaseSendText1 yes/no y\r # 在 ExpectPattern1 匹配之前,若遇到 yes/no 则
$ claude mcp add trzsz-ssh \
-- python -m otcore.mcp_server <graph>