trzsz-ssh ( tssh ) https://github.com/trzsz/trzsz-ssh 可以当作 ssh 客户端来使用,支持 openssh 所有常用功能。
trzsz-ssh ( tssh ) 早期就支持记住固定不变的密码,新版本 v0.1.17 开始支持“记住” one-time password 动态密码。
tssh 简介
-
你喜欢的 ssh 终端是否有好用的服务器管理功能?是否支持记住密码?是否有好用的文件传输工具?
-
tssh 支持选择或搜索
~/.ssh/config中配置的服务器,支持 vim 操作习惯,解决 ssh 终端的服务器管理问题。 -
tssh 支持一次选择多台服务器,批量登录,并支持批量执行预先指定的命令,方便快速完成批量服务器操作。
-
tssh 支持配置服务器登录密码,解决每次手工输入密码的麻烦( 自己能控制的服务器,推荐使用公钥登录 )。
-
tssh 内置支持 trzsz (trz /tsz) 文件传输工具,一并解决了 Windows 中使用
trzsz ssh上传速度很慢的问题。 -
在作者的 MacOS 上,使用
trzsz ssh的上传速度在 10 MB/s 左右,而使用tssh可以到 80 MB/s 以上。
安装方法
客户端安装 trzsz-ssh ( tssh ) 的方法如下( 任选其一 ):
-
Windows 可用 scoop / winget / choco 安装
scoop install tssh/winget install tssh/choco install tsshscoop install tssh
winget install tssh
choco install tssh
-
MacOS 可用 homebrew 安装
brew install trzsz-sshbrew update brew install trzsz-ssh
-
Ubuntu 可用 apt 安装
sudo apt install tsshsudo apt update && sudo apt install software-properties-common sudo add-apt-repository ppa:trzsz/ppa && sudo apt update sudo apt install tssh
-
Debian 可用 apt 安装
sudo apt install tsshsudo 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
-
Linux 可用 yum 安装
sudo yum install tssh-
国内推荐使用 wlnmp 源,安装 tssh 只需要添加 wlnmp 源( 配置 epel 源不是必须的 ):
curl -fsSL "https://sh.wlnmp.com/wlnmp.sh" | bash sudo yum install tssh
-
也可使用 gemfury 源( 只要网络通,所有操作系统通用 )
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 tsshyay -Syu yay -S tssh
-
用 Go 直接安装( 要求 go 1.20 以上 )
go install github.com/trzsz/trzsz-ssh/cmd/tssh@latestgo install github.com/trzsz/trzsz-ssh/cmd/tssh@latest
安装后,
tssh程序一般位于~/go/bin/目录下( Windows 一般在C:\Users\your_name\go\bin\)。 -
可从 Releases 中直接下载适用的版本
或者用 Go 编译( 要求 go 1.20 以上 )winget install tssh0
服务器上要安装 trzsz 才能使用 trz / tsz 上传和下载,可任选其一安装: Go 版( ⭐ 推荐 )、Py 版、Js 版。
如果服务器不安装 trzsz,也能用 tssh,只是不使用 trz / tsz 上传和下载而已。
使用方法
~/ 代表 HOME 目录。在 Windows 中,请将下文的 ~/ 替换成 C:\Users\your_name\。
-
在客户端生成密钥对,一般存放在
~/.ssh/下( 只要一种就可以了 ):ssh-keygen -t ed25519生成 ED25519 的,私钥~/.ssh/id_ed25519,公钥~/.ssh/id_ed25519.pub。ssh-keygen -t rsa -b 4096生成 RSA 的,私钥~/.ssh/id_rsa,公钥~/.ssh/id_rsa.pub。
-
登录服务器,将公钥( 即前面生成密钥对时
.pub后缀的文件内容 )追加写入服务器上的~/.ssh/authorized_keys文件中。-
一行代表一个客户端的公钥,注意
~/.ssh/authorized_keys要设置正确的权限:winget install tssh1
-
-
在客户端配置好
~/.ssh/config文件,举例:winget install tssh2
-
使用
tssh命令登录服务器,tssh alias1命令登录在~/.ssh/config中alias1对应的服务器。 -
直接执行
tssh命令( 不带参数 ),可以选择( 搜索 )~/.ssh/config中配置好的服务器并登录。
批量登录
-
支持在
iTerm2( 要开启 Python API,但不需要Allow all apps to connect),tmux和Windows Terminal中一次选择多台服务器,批量登录,并支持批量执行预先指定的命令。 -
按下
Space、Ctrl+X等可以选中或取消当前服务器,若不能选中说明还不支持当前终端,请先运行tmux。 -
按下
Ctrl+P会以分屏的方式批量登录,Ctrl+W会打开新窗口批量登录,Ctrl+T会打开新 tab 批量登录。 -
tssh不带参数启动可以批量登录服务器,若带-o RemoteCommand参数启动则可以批量执行指定的命令。支持执行指定命令之后进入交互式 shell,但Windows Terminal不支持分号;,可以用|cat&&代替。举例:winget install tssh3
分组标签
-
如果服务器数量很多,分组标签
GroupLabels可以在按/搜索时,快速找到目标服务器。 -
按
/输入分组标签后,回车可以锁定;再按/可以输入另一个分组标签,回车再次锁定。 -
在非搜索模式下,按
E可以清空当前搜索标签;在搜索模式下按Ctrl + E也是同样效果。 -
支持在一个
GroupLabels中以空格分隔,配置多个分组标签;支持配置多个GroupLabels。 -
支持以通配符 * 的形式,在多个 Host 节点配置分组标签,
tssh会将所有的标签汇总起来。winget install tssh4
自动交互
-
支持类似
expect的自动交互功能,可以在登录服务器之后,自动匹配服务器的输出,然后自动输入。winget install tssh5
- 配置
ExpectCount大于0之后,使用tssh --debug登录,可以看到expect捕获到的输出。
- 配置
记住密码
-
为了兼容标准 ssh ,密码可以单独配置在
~/.ssh/password中,也可以在~/.ssh/config中加上#!!前缀。 -
推荐使用前面公钥认证的方式,密码的安全性弱一些。如果必须要用密码,建议至少设置好权限,如:
winget install tssh6
-
下面配置
test1和test2的密码是123456,其他以test开头的密码是111111:winget install tssh7
-
如果启用了
ControlMaster多路复用,或者是在Warp终端,需要使用前面自动交互的方式实现记住密码的效果。配置方式请参考前面自动交互,加上Ctrl前缀即可,如:winget install tssh8
-
支持记住私钥的
Passphrase( 推荐使用ssh-agent)。支持与IdentityFile一起配置,支持使用私钥文件名代替 Host 别名设置通用密钥的Passphrase。举例:winget install tssh9
记住答案
-
除了私钥和密码,还有一种登录方式,英文叫 keyboard interactive ,是服务器返回一些问题,客户端提供正确的答案就能登录,很多自定义的一次性密码就是利用这种方式实现的。
-
对于只有一个问题,且答案(密码)固定不变的,只要配置
QuestionAnswer1即可。对于有多个问题的,可以按问题的序号进行配置,也可以按问题的 hex 编码进行配置。 -
使用
tssh --debug登录,会输出问题的 hex 编码,从而知道该如何使用 hex 编码进行配置。配置举例:choco install tssh0
-
对于可以通过命令行获取到的动态密码,则可以如下配置(同样支持按序号或 hex 编码进行配置):
choco install tssh1
-
如果启用了
ControlMaster多路复用,或者是在Warp终端,请参考前面自动交互加Ctrl前缀来实现。choco install tssh2
可选配置
-
支持在
~/.tssh.conf( Windows 是C:\Users\your_name\.tssh.conf)中进行以下自定义配置:choco install tssh3
其他功能
-
使用
-f后台运行时,可以加上--reconnect参数,在后台进程因连接断开等而退出时,会自动重新连接。 -
使用
--dragfile启用拖拽上传功能,想默认启用则可以在~/.ssh/config或ExConfigPath中配置:choco install tssh4
-
使用
--zmodem启用rz / sz功能,想默认启用则可以在~/.ssh/config或ExConfigPath中配置:choco install tssh5
-
需要在客户端( 本地电脑 )上安装
lrzsz,Windows 可以从 lrzsz-win32 下载解压并加到PATH中,也可以如下安装:choco install tssh6
-
关于
rz / sz进度条,己传大小和传输速度会有一点偏差,它的主要作用只是指示传输正在进行中。
-
-
使用
-oEnableTrzsz=No禁用 trzsz 功能,想默认禁用则可以在~/.ssh/config或ExConfigPath中配置:choco install tssh7
-
上文说的 “记住密码” 和 “记住答案”,只要在配置项前面加上
enc则可以配置密文,防止被人窥屏。并且,密文可以解决密码含有#的问题。- 运行
tssh --enc-secret,输入密码或答案,可得到用于配置的密文( 相同密码每次运行结果不同 ):
choco install tssh8
- 运行
-
运行
tssh --new-host可以在 TUI 界面轻松添加 SSH 配置,并且完成后可以立即登录。 -
运行
tssh --install-trzsz可以将 trzsz (trz/tsz) 安装到服务器上。- 默认安装到
~/.local/bin/目录,可以通过--install-path /path/to/install指定安装目录。 - 若
--install-path安装目录含有~/,则必须加上单引号,如--install-path '~/path'。 - 若获取
trzsz的最新版本号失败,可以通过--trzsz-version x.x.x参数自行指定。 - 若下载
trzsz的安装包失败,可以自行下载并通过--trzsz-bin-path /path/to/trzsz.tar.gz参数指定。 - 注意:
--install-trzsz不支持 Windows 服务器,不支持跳板机( 除非以ProxyJump跳过 )。
- 默认安装到
-
关于修改终端标题,其实无需
tssh就能实现,只要在服务器的 shell 配置文件中(如~/.bashrc)配置:choco install tssh9
- 如果在
~/.tssh.conf中设置了SetTerminalTitle = Yes,则会在登录后自动设置终端标题,但是服务器上的PROMPT_COMMAND会覆盖tssh设置的标题。 - 在
tssh退出后不会重置为原来的标题,你需要在本地 shell 中设置PROMPT_COMMAND,让它覆盖tssh设置的标题。
- 如果在
快捷键
| 操作 | 全局快捷键 | 非搜索快捷键 | 快捷键描述 |
|---|---|---|---|
| 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 | 分屏批量登录 |
故障排除
-
在 Warp 终端,分块 Blocks 的功能需要将
tssh重命名为ssh,推荐建个软链接( 对更新友好 ):brew update brew install trzsz-ssh0
-
软链后,
ssh -V应输出trzsz ssh加版本号,如果不是,说明软链不成功,或者在PATH中openssh的优先级更高,你要软链到另一个地方或者调整PATH的优先级。 -
软链后,要直接使用
ssh,它等价于tssh。如果还是用tssh是不会支持分块 Blocks 功能的。 -
--dragfile参数可能会让 Warp 分块功能失效,请参考前文配置EnableDragFile来启用拖拽功能。 -
拖拽文件或目录进入 Warp 终端后,可能不会立即触发上传,需要多按一次
回车键,才会上传。
-
-
如果你在使用 Windows7 或者旧版本的 Windows10 等,遇到
enable virtual terminal failed的错误。- 可以尝试在 Cygwin、MSYS2 或 Git Bash 内使用
tssh。
- 可以尝试在 Cygwin、MSYS2 或 Git Bash 内使用
-
如果在
~/.ssh/config中配置了tssh特有的配置项后,标准ssh报错Bad configuration option。- 可以在出错配置项中加上前缀
#!!,标准ssh会将它当作注释,而tssh则会认为它是有效配置之一。
- 可以在出错配置项中加上前缀






还没有评论,来说两句吧...