tssh 是一个 openssh 客户端的替代品, 基础功能兼容 openssh,另外提供了很多有用的扩展功能。
新版本 v0.1.19 解决了一些大家遇到的问题,配置的注释做了一点小调整。
GitHub:https://github.com/trzsz/trzsz-ssh
Gitee:https://gitee.com/trzsz/tssh
配置注释
-
tssh
配置中的注释基本与openssh
一致,额外做了一些扩展支持,详见下表:注释 openssh tssh #
开头的配置行是注释 是注释 #!!
开头的配置行是注释 非注释 Key Value # Comment
看情况 是注释 Key=Value # Comment
看情况 非注释 -
#
开头的配置行,openssh
一律认为是注释;tssh
认为#!!
开头的配置行不是注释,其他以#
开头的配置行是注释。 -
Key Value # Comment
配置(没有=
号),openssh
有些情况认为#
后的内容是注释,有些情况认为不是注释;tssh
一律认为#
后的内容是注释。 -
Key=Value # Comment
配置(有=
号),openssh
有些情况认为#
后的内容是注释,有些情况认为不是注释;tssh
一律认为#
后的内容不是注释。
为什么做
-
服务器太多,记不住所有别名,
tssh
内置登录界面,支持搜索和选择服务器登录。 -
tssh
登录服务器后,内置支持 trzsz (trz /tsz) 工具,传文件无需另外新开窗口。 -
有时需要同时登录一批机器,
tssh
支持多选并批量登录,同时支持执行预设的命令。 -
有些服务器不支持公钥登录,
tssh
支持记住密码,支持自动交互,提升登录的效率。 -
在 Windows 中使用
tssh
代替trzsz ssh
,可以解决trz
上传速度很慢的问题。
安装方法
客户端安装 trzsz-ssh ( tssh )
的方法如下( 任选其一 ):
-
Windows 可用 scoop / winget / choco 安装
scoop install tssh
/winget install tssh
/choco install tssh
scoop install tssh
winget install tssh
choco install tssh
-
MacOS 可用 homebrew 安装
brew install trzsz-ssh
brew update brew install trzsz-ssh
-
Ubuntu 可用 apt 安装
sudo apt install tssh
sudo 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 tssh
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
-
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 tssh
yay -Syu yay -S tssh
-
用 Go 直接安装( 要求 go 1.20 以上 )
go install github.com/trzsz/trzsz-ssh/cmd/tssh@latest
go install github.com/trzsz/trzsz-ssh/cmd/tssh@latest
安装后,
tssh
程序一般位于~/go/bin/
目录下( Windows 一般在C:\Users\your_name\go\bin\
)。 -
用 Go 自己编译( 要求 go 1.20 以上 )
sudo make install
winget install tssh 0
-
可从 GitHub Releases 中下载,国内可从 Gitee 发行版 中下载,解压并加到
PATH
环境变量中。
登录界面
-
使用之前,需要配置好
~/.ssh/config
( Windows 是C:\Users\xxx\.ssh\config
,xxx
换成用户名 )。 -
关于如何配置
~/.ssh/config
,请参考 openssh ( 暂不支持Match
),或参考 tssh wiki SSH 基本配置。 -
直接无参数运行
tssh
命令就会打开登录界面,或者有除目标机器外的其他参数也会打开登录界面。 -
如果目标机器参数是
~/.ssh/config
中别名的一部分,不能完全匹配某个别名,也会打开登录界面。 -
别名含有
*
或?
通配符时,则不会显示在登录界面中,要隐藏的别名可以加个*
前缀或后缀。 -
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
支持多种主题风格,在~/.tssh.conf
中配置PromptThemeLayout
选用。欢迎一起来创造更多更好看的。 -
每种主题风格都支持自定义颜色,在
~/.tssh.conf
中配置PromptThemeColors
,只要配置非默认的颜色即可。 -
请为你喜欢的主题风格❤️投票❤️,得票数最高的主题风格将会在下个版本被设置为默认主题。
tiny 小巧风
-
在
~/.tssh.conf
中配置PromptThemeLayout = tiny
选用tiny 小巧风
。 -
在
~/.tssh.conf
中配置PromptThemeColors
,要求配置成一行。tiny 小巧风
支持以下配置项:tiny 颜色配置项和默认值:
winget install tssh 1
tiny 支持的颜色枚举,可用 `|` 连接多个:
winget install tssh 2
simple 简约风
-
在
~/.tssh.conf
中配置PromptThemeLayout = simple
选用simple 简约风
。 -
simple 简约风
支持的颜色配置项、默认值和颜色枚举,和tiny 小巧风
完全相同,请参考前文。
table 表格风
-
在
~/.tssh.conf
中配置PromptThemeLayout = table
选用table 表格风
。 -
在
~/.tssh.conf
中配置PromptThemeColors
,要求配置成一行。table 表格风
支持以下配置项:table 颜色配置项和默认值:
winget install tssh 3
-
支持的颜色枚举请参考 lipgloss,除了
help_tips
和shortcuts
与前文tiny 小巧风
相同。
支持 trzsz
-
在服务器上要安装 trzsz,才能使用
trz / tsz
上传和下载,可任选其一安装:Go 版( ⭐ 推荐 )、Py 版、Js 版。 -
在
~/.ssh/config
或ExConfigPath
配置文件中,配置EnableDragFile
为Yes
启用拖拽上传功能。winget install tssh 4
-
如果只是想临时启用拖拽上传功能,可以在命令行中使用
tssh --dragfile
登录服务器。 -
在
~/.ssh/config
或ExConfigPath
配置文件中,配置EnableTrzsz
为No
禁用 trzsz 和 zmodem。winget install tssh 5
支持 zmodem
-
在
~/.ssh/config
或ExConfigPath
配置文件中,配置EnableZmodem
为Yes
启用rz / sz
功能。winget install tssh 6
-
除了服务器,本地电脑也要安装
lrzsz
,Windows 可以从 lrzsz-win32 下载,解压并加到PATH
环境变量中,也可以如下安装:winget install tssh 7
winget install tssh 8
-
如果只是想临时启用
rz / sz
传文件功能,可以在命令行中使用tssh --zmodem
登录服务器。 -
关于
rz / sz
进度条,己传大小和传输速度会有一点偏差,它的主要作用只是指示传输正在进行中。
批量登录
-
支持在
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&&
代替。举例:winget install tssh 9
分组标签
-
如果服务器数量很多,分组标签
GroupLabels
可以在按/
搜索时,快速找到目标服务器。 -
按
/
输入分组标签后,回车
可以锁定;再按/
可以输入另一个分组标签,回车
再次锁定。 -
在非搜索模式下,按
E
可以清空当前搜索标签;在搜索模式下按Ctrl + E
也是同样效果。 -
支持在一个
GroupLabels
中以空格分隔,配置多个分组标签;支持配置多个GroupLabels
。 -
支持以通配符 * 的形式,在多个 Host 节点配置分组标签,
tssh
会将所有的标签汇总起来。choco install tssh 0
自动交互
-
支持类似
expect
的自动交互功能,在登录服务器之后,自动匹配服务器的输出,然后自动输入。choco install tssh 1
-
在每个
ExpectPattern?
匹配之前,如果遇到可选的匹配则自动输入,用法如下:choco install tssh 2
-
在匹配到指定输出时,执行指定的命令获取动态密码,然后自动输入,用法如下:
choco install tssh 3
-
可能有些服务器不支持连着发送数据,如输入
1\r
,要求在1
之后有一点延迟,然后再\r
回车,则可以用\|
间开。choco install tssh 4
-
如果不知道
ExpectPattern2
如何配置,可以先将ExpectCount
配置为2
,然后使用tssh --debug
登录,就会看到expect
捕获到的输出,可以直接复制输出的最后部分来配置ExpectPattern2
。把2
换成其他任意的数字也适用。
记住密码
-
推荐使用公钥认证登录,可参考 openssh 的文档,或者参考 tssh wiki 公钥认证登录。
-
如果只能使用密码登录,建议至少设置一下配置文件的权限,如:
choco install tssh 5
-
下面配置
test1
和test2
的密码是123456
,其他以test
开头的密码是111111
:choco install tssh 6
-
如果启用了
ControlMaster
多路复用,或者是在Warp
终端,需要使用前面自动交互
的方式实现记住密码的效果。配置方式请参考前面自动交互
,加上Ctrl
前缀即可,如:choco install tssh 7
-
支持记住私钥的
Passphrase
( 推荐使用ssh-agent
)。支持与IdentityFile
一起配置,支持使用私钥文件名代替 Host 别名设置通用密钥的Passphrase
。举例:choco install tssh 8
-
记住密码
之后还提示输入密码?可能服务器的认证方式是keyboard interactive
,请参考下文记住答案
。
记住答案
-
除了私钥和密码,还有一种登录方式,英文叫 keyboard interactive ,是服务器返回一些问题,客户端提供正确的答案就能登录,很多自定义的一次性密码就是利用这种方式实现的。
-
对于只有一个问题,且答案(密码)固定不变的,只要配置
QuestionAnswer1
即可。对于有多个问题的,可以按问题的序号进行配置,也可以按问题的 hex 编码进行配置。 -
使用
tssh --debug
登录,会输出问题的 hex 编码,从而知道该如何使用 hex 编码进行配置。配置举例:choco install tssh 9
-
对于可以通过命令行获取到的动态密码,则可以如下配置(同样支持按序号或 hex 编码进行配置):
brew update brew install trzsz-ssh 0
-
如果启用了
ControlMaster
多路复用,或者是在Warp
终端,请参考前面自动交互
加Ctrl
前缀来实现。brew update brew install trzsz-ssh 1
个性配置
-
支持在
~/.tssh.conf
( Windows 是C:\Users\your_name\.tssh.conf
)中进行以下自定义配置:brew update brew install trzsz-ssh 2
配置注释
-
tssh
配置中的注释基本与openssh
一致,额外做了一些扩展支持,详见下表:注释 openssh tssh #
开头的配置行是注释 是注释 #!!
开头的配置行是注释 非注释 Key Value # Comment
看情况 是注释 Key=Value # Comment
看情况 非注释 -
#
开头的配置行,openssh
一律认为是注释;tssh
认为#!!
开头的配置行不是注释,其他以#
开头的配置行是注释。 -
Key Value # Comment
配置(没有=
号),openssh
有些情况认为#
后的内容是注释,有些情况认为不是注释;tssh
一律认为#
后的内容是注释。 -
Key=Value # Comment
配置(有=
号),openssh
有些情况认为#
后的内容是注释,有些情况认为不是注释;tssh
一律认为#
后的内容不是注释。
其他功能
-
使用
-f
后台运行时,可以加上--reconnect
参数,在后台进程因连接断开等而退出时,会自动重新连接。 -
运行
tssh --enc-secret
,输入密码或答案,可得到用于配置的密文( 相同密码每次运行结果不同 )。- 上文说的
记住密码
和记住答案
等,在配置项前面加上enc
则可以配置成密文,防止被人窥屏。 - 如果密码中含有
#
等特殊字符,直接配置密码明文可能会导致登录失败,此时则必须使用密文配置。
brew update brew install trzsz-ssh 3
- 上文说的
-
运行
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
)配置:brew update brew install trzsz-ssh 4
- 如果在
~/.tssh.conf
中设置了SetTerminalTitle = Yes
,则会在登录后自动设置终端标题,但是服务器上的PROMPT_COMMAND
会覆盖tssh
设置的标题。 - 在
tssh
退出后不会重置为原来的标题,你需要在本地 shell 中设置PROMPT_COMMAND
,让它覆盖tssh
设置的标题。
- 如果在
故障排除
-
在 Warp 终端,分块 Blocks 的功能需要将
tssh
重命名为ssh
,推荐建个软链接( 对更新友好 ):brew update brew install trzsz-ssh 5
-
软链后,
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
则会认为它是有效配置之一。
- 可以在出错配置项中加上前缀
还没有评论,来说两句吧...