支持 trzsz 的 ssh 客户端,支持搜索和选择服务器进行批量登录,支持记住密码。 An ssh client that supports trzsz, supports searching and selecting servers for batch login.
trzsz-ssh ( tssh )
支持 trzsz ( trz / tsz ) 的 ssh 客户端,支持搜索和选择服务器进行批量登录,支持记住密码。
An ssh client that supports trzsz, supports searching and selecting servers for batch login.
Website: https://trzsz.github.io/ssh ( English ) 中文文档:https://trzsz.github.io/cn/ssh
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 tssh
-
MacOS 可用 homebrew 安装
brew install trzsz-ssh
-
Ubuntu 可用 apt 安装
sudo apt install tssh
-
Debian 可用 apt 安装
sudo apt install tssh
-
Linux 可用 yum 安装
sudo yum install tssh
-
ArchLinux 可用 yay 安装
yay -S tssh
-
用 Go 直接安装( 要求 go 1.20 以上 )
go install github.com/trzsz/trzsz-ssh/cmd/tssh@latest
-
可从 Releases 中直接下载适用的版本
或者用 Go 编译( 要求 go 1.20 以上 )
服务器上要安装 trzsz 才能使用 trz / tsz
上传和下载,可任选其一安装:
Go 版( ⭐ 推荐 )、Py 版、Js 版。
如果服务器不安装 trzsz,也能用 tssh
,只是不使用 trz / tsz
上传和下载而已。
使用方法
~/
代表 HOME 目录。在 Windows 中,请将下文的 ~/
替换成 C:\Users\your_name\
。
-
在客户端生成密钥对,一般存放在
~/.ssh/
下:ssh-keygen -t rsa -b 4096
生成 RSA 的,私钥~/.ssh/id_rsa
,公钥~/.ssh/id_rsa.pub
。
-
登录服务器,将公钥( 即前面生成密钥对时
.pub
后缀的文件内容 )追加写入服务器上的~/.ssh/authorized_keys
文件中。一行代表一个客户端的公钥,注意
~/.ssh/authorized_keys
要设置正确的权限:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
在客户端配置好 ~/.ssh/config
文件,举例:
Host alias1
HostName 192.168.0.1
Port 22
User your_name
Host alias2
HostName 192.168.0.2
Port 22
User your_name
-
使用
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&&
代替。举例:tssh -t -o RemoteCommand='ping -c3 trzsz.github.io ; bash' tssh -t -o RemoteCommand="ping -c3 trzsz.github.io |cat&& bash"
记住密码
-
为了兼容标准 ssh ,密码配置项独立放在
~/.ssh/password
中,其他配置项依然放在~/.ssh/config
中。 -
推荐使用前面密钥认证的方式,密码的安全性弱一些。如果必须要用,建议设置好
~/.ssh/password
的权限:chmod 700 ~/.ssh && chmod 600 ~/.ssh/password
下面 ~/.ssh/password
配置 test2
的密码是 123456
,其他以 test
开头的密码是 111111
:
Host test2
Password 123456
# ~/.ssh/config 和 ~/.ssh/password 是支持通配符的,tssh 会使用第一个匹配到的值。
# 这里希望 test2 使用区别于其他 test* 的密码,所以将 test* 放在了 test2 的后面。
Host test*
Password 111111
支持记住私钥的Passphrase
。如果 ~/.ssh/config
中配置了 IdentityFile
, 则使用相同的 Host 别名,在 ~/.ssh/password
中配置对应的 Passphrase
。如果 ~/.ssh/config
中没有配置 IdentityFile
,通用的私钥则使用私钥文件名代替 Host 别名。举例:
# ~/.ssh/config 中 test1 配置了 IdentityFile
Host test1
IdentityFile /path/to/id_rsa
# ~/.ssh/password 中配置 test1 私钥对应的 Passphrase
Host test1
Passphrase 123456
# ~/.ssh/password 中配置通用私钥 ~/.ssh/id_rsa 对应的 Passphrase
Host id_rsa
Passphrase 111111
记住答案
-
除了私钥和密码,还有一种登录方式,英文叫 keyboard interactive ,是服务器返回一些问题,客户端提供正确的答案就能登录,很多自定义的一次性密码就是利用这种方式实现的。
-
如果答案是固定不变的,
tssh
支持“记住答案”,也是在~/.ssh/password
中进行配置。大部分都是只有一个问题,只要配置QuestionAnswer1
即可。对于有多个问题的,每个问题答案可按序号进行配置,也可以按问题的 hex 编码进行配置。 -
使用
tssh --debug
登录,会输出问题的 hex 编码,从而知道该如何使用 hex 编码进行配置。配置举例:Host test1 QuestionAnswer1 答案一 Host test2 QuestionAnswer1 答案一 QuestionAnswer2 答案二 QuestionAnswer3 答案三 Host test3 6e616d653a20 my_name # 其中 `6e616d653a20` 是问题 `name: ` 的 hex 编码 636f64653a20 my_code # 其中 `636f64653a20` 是问题 `code: ` 的 hex 编码
可选配置
-
支持在
~/.tssh.conf
( Windows 是C:\Users\your_name\.tssh.conf
)中进行以下自定义配置:# SSH 配置路径,默认为 ~/.ssh/config ConfigPath = ~/.ssh/config # 扩展配置路径,默认为 ~/.ssh/password ExConfigPath = ~/.ssh/password # trz 上传时,对话框打开的路径,为空时打开上次的路径, 默认为空 DefaultUploadPath = ~/Downloads # tsz 下载时,自动保存的路径,为空时弹出对话框手工选择,默认为空 DefaultDownloadPath = ~/Downloads
其他功能
-
使用
-f
后台运行时,可以一并加上--reconnect
参数,这样在后台进程因连接断开等而退出时,会自动重新连接。 -
使用
--dragfile
启用拖拽上传功能,想默认启用则可以在ExConfigPath
配置的文件( 默认是~/.ssh/password
)中配置:Host * EnableDragFile Yes
使用 -oEnableTrzsz=No
禁用 trzsz 功能,想默认禁用则可以在 ExConfigPath
配置的文件( 默认是 ~/.ssh/password
)中配置:
Host server1
EnableTrzsz No
上文说的“记住密码”和“记住答案”,只要在配置项前面加上 enc
则可以配置密文,防止被人窥屏。密文可以解决密码含有#
的问题。
运行 tssh --enc-secret
,输入密码或答案的明文( 不会回显 ),可得到用于配置的密文( 相同密码每次加密的结果不同 ):
Host server2
encPassword de88c4dbdc95d85303682734e2397c4d8dd29bfff09ec53580f31dd40291fc8c7755
encQuestionAnswer1 93956f6e7e9f2aef3af7d6a61f7046dddf14aa4bbd9845dbb836fe3782b62ac0d89f
快捷键
操作 | 全局快捷键 | 非搜索快捷键 | 快捷键描述 |
---|---|---|---|
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
,推荐建个软链接( 对更新友好 ):sudo ln -sv $(which tssh) /usr/local/bin/ssh
-
--dragfile
参数可能会让 Warp 分块功能失效,请参考前文配置EnableDragFile
来启用拖拽功能。 -
拖拽文件或目录进入 Warp 终端后,可能不会立即触发上传,需要多按一次回车键,才会上传。
-
-
如果你在使用 Windows7 或者旧版本的 Windows10 等,遇到
enable virtual terminal failed
的错误。
录屏演示
from https://github.com/trzsz/trzsz-ssh
No comments:
Post a Comment