开源地址: https://github.com/trzsz/trzsz-ssh
目前支持在 tmux
和 Windows Terminal
中一次选择多台服务器,批量登录,并支持批量执行预先指定的命令。
按下 Space
、Ctrl+Space
或 Alt+Space
可以选中或取消当前服务器,若不能选中说明还不支持当前终端,请先运行 tmux
。
按下 Enter
或 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"
1
yhrzpm 2023-07-23 03:20:36 +08:00
支持服务器分组吗
|
2
LonnyWong OP @yhrzpm 现在还不支持分组。支持搜索,在 alias 命名上同一组有相同的前缀或后缀,就可以搜索出来选择。不过在搜索状态时,快捷键基本都要同时按下 Ctrl 键。
|
3
ruanimal 2023-07-23 10:38:02 +08:00
熬夜搞啊
|
6
skiy 2023-07-23 13:37:06 +08:00
本来想用的,但要改 ~/.ssh/config ,我就不想用了。可以自定义配置文件路径吗?
我目前在用 sshmenu ( https://github.com/mmeyer724/sshmenu ),挺好用的,但不是二进制单文件,要依赖 python 环境,觉得不方便。 |
7
LonnyWong OP @skiy 你可以在 ~/.ssh/config 的最前面,加一行 Include 另一个 config 文件,然后就可以在另一个 config 中配置了。
|
8
huaxianyan 2023-08-09 10:47:46 +08:00
我用了一段时间发现单靠 sshconfig 还是有一些局限性
比如我还是需要有一定的对服务器的额外信息标记以及对部分配置的屏蔽,最简单的例子就是给 git 配置了代理方便 git 通过 ssh 来使用,但是在列表中显示就看着难受 另外 tssh 在我这里的定位是对于不常用的机器会特别好用,这些机器已经配置了连接信息,但是因为不常用可能忘记了取的名字是啥,这时候用 tssh 打开列表就很好用 最后还有点强迫症就是 sshconfig 里配置时平常 ssh xxx 肯定用的全小写,因为区分大小写首字母大写很难受,但是在 tssh 里列出来首字母不大写的时候也很难受,要是有额外的配置项就好了 |
9
LonnyWong OP @huaxianyan
1 、在 alias 后面加一个通配符 * 或 ? ,就不会在列表中显示了,只要不是刚好有其他 alias 的前缀等于它,就不会有什么影响。 2 、首字母显示是小写,感觉还好吧?另外一个比较取巧的办法是,可以像下面这样配置( 要求没有其他 test 前缀的,要不可能会冲突 )。这样 tssh 显示的就是 Test ,不会显示 test?,然后 tssh test 也能正常登录。在 v0.1.10 发布前,最好先用 main 分支的版本 go install github.com/trzsz/trzsz-ssh/cmd/tssh@main ,在 v0.1.9 之前会不显示第二个 test? 的,即使没有通配符也不会显示,但是 v0.1.10 会修复这个问题,没有通配符就会显示出来。 Host Test test? HostName 127.0.0.1 |
10
huaxianyan 2023-08-10 10:46:36 +08:00
@LonnyWong 用 * 有效,感谢!
? 也试过但是不生效,原因不知,不过有一个可以生效的就很好,这样我就可以在显示和使用上取得平衡了 最后想请问一下列表上下选择时终端会出提示音,有没有可以开关的选项? |
11
LonnyWong OP @huaxianyan 提示音,我已经去掉了,看来你还在用比较旧的版本,升级到 v0.1.9 看看?
tssh -V 可以看到当前版本。which tssh 可以看到使用哪个路径的 tssh ( 在 Windows 是 get-command tssh )。 |
12
LonnyWong OP 一开始不支持 ? 的,加上很久了,看来你在用的版本是很久以前的了。
|
13
huaxianyan 2023-08-10 11:40:56 +08:00
@LonnyWong
更新了之后没有问题了,感谢 顺便问一下 trzsz 的问题,我在服务端上安装了 go 版服务端,然后客户端使用 tssh 连接后使用命令来使用,这个理解应该是没问题吧? 但是在敲了命令后会报错,提示以下内容 ``` ::TRZSZGO:TRANSFER:R:1.1.5:9163880153900 exec: "zenity": executable file not found in $PATH goroutine 1 [running]: runtime/debug.Stack() /usr/lib/go-1.20/src/runtime/debug/stack.go:24 +0x65 github.com/trzsz/trzsz-go/trzsz.newTrzszError({0xc0001d4000, 0x50}, {0xc0001d2000, 0x4}, 0x1) /build/trzsz-DlTGjQ/trzsz-1.1.5/trzsz/comm.go:232 +0x272 github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvCheck(0x17f7811632fa8?, {0x59e270, 0x3}, 0x20?, 0x714534?) /build/trzsz-DlTGjQ/trzsz-1.1.5/trzsz/transfer.go:321 +0x152 github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvString(0xc00000000f?, {0x59e270?, 0xc000059be0?}, 0xb3?, 0xc000059c30?) /build/trzsz-DlTGjQ/trzsz-1.1.5/trzsz/transfer.go:355 +0x1e github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvAction(0xc00015c000) /build/trzsz-DlTGjQ/trzsz-1.1.5/trzsz/transfer.go:478 +0x32 github.com/trzsz/trzsz-go/trzsz.recvFiles(0xc00015c000?, 0xc00007e930, 0x2b?, 0x3?) /build/trzsz-DlTGjQ/trzsz-1.1.5/trzsz/trz.go:70 +0x47 github.com/trzsz/trzsz-go/trzsz.TrzMain() /build/trzsz-DlTGjQ/trzsz-1.1.5/trzsz/trz.go:189 +0x9d6 main.main() /build/trzsz-DlTGjQ/trzsz-1.1.5/cmd/trz/main.go:33 +0x19 ``` |
14
LonnyWong OP @huaxianyan 你这个报错应该是在服务器上运行了 trzsz 命令。
服务器上一般只用 trz 和 tsz 这两个命令,客户端才有可能需要用 trzsz 这个命令,你用 tssh 了,那客户端也不需要 trzsz 这个命令了。 如果你的客户端是 tssh 或者 trzsz ,也报了找不到 zenity ,那就是要手工安装一个 zenity ,如 yum install zenity 或 apt install zenity 等。 |
15
huaxianyan 2023-08-10 12:39:29 +08:00
@LonnyWong 在客户端安装了 zenity 后现在会提示
``` ::TRZSZGO:TRANSFER:R:1.1.5:9164230543300 Cancelled ``` 使用的环境是 Windows Terminal 配合 WSL1 ,服务端为 Ubuntu |
16
LonnyWong OP 原来你是在 WSL 中使用 tssh 呀,那要在 Windows 中安装 tssh ,然后在 WSL 中使用 Windows 安装的 tssh.exe ,好像 .exe 还不能省略,应该也可以复制 tssh.exe 到 WSL 内使用。使用的配置不是 WSL 内的,你要复制到 C:\Users\xxx\.ssh\config 中。
|
17
LonnyWong OP @huaxianyan 上面这个是否可以?
|
18
huaxianyan 2023-08-11 09:49:51 +08:00
@LonnyWong 我想应该是没问题的,本质上就是改用 Windows 的 SSH 来连了,这样我感觉不如给 Powershell 配置一套,直接从 PS 去连,省得从 WSL 里走一遍有点没必要
没有及时回复抱歉,我现在遇到一个很奇怪的问题,Windows 本身的 SSH 连接的时候调用密钥路径拼接不对,正反斜杠都有导致用不了,一直在解决这个事情(虽然还没有解决 |
19
huaxianyan 2023-08-11 09:51:46 +08:00
@LonnyWong
``` identity_sign: private key C:\\Users\\7inaWork-Windows/.ssh/id_rsa contents do not match public ``` 类似这样 |
20
huaxianyan 2023-08-11 09:53:56 +08:00
@huaxianyan 抱歉解决了,把 .ssh 目录下的公钥删除就好了,虽然我不知道为什么会影响
|
21
huaxianyan 2023-08-11 09:58:05 +08:00
@LonnyWong 通过 Windows 本身的 tssh 可以正常工作,没有问题
|
22
LonnyWong OP @huaxianyan Windows Terminal 会比直接 PS 好用很多,可以试试。
|
23
huaxianyan 2023-08-11 22:26:44 +08:00
@LonnyWong 是 Windows Terminal 使用 PS ,之前是 WT 使用 WSL ,就是换了个 Shell
|
24
LonnyWong OP @skiy v0.1.11 支持在 ~/.tssh.conf 中自定义配置路径了。
ConfigPath = /path/to/config https://github.com/trzsz/trzsz-ssh/releases |
25
huaxianyan 2023-08-28 01:07:11 +08:00
@LonnyWong 我问一下是不是新版 tssh hostname 默认变成关键字搜索了?之前是直接连接的
|
26
LonnyWong OP @huaxianyan 是指 test* 和 test? 这种变成搜索了?这不符合预期,我想想怎么解决。
|
27
LonnyWong OP @huaxianyan 最新的分支应该修复了,在 v0.1.12 发布之前,可以下面这样安装,安装后程序在 `~/go/bin/tssh`:
``` go install github.com/trzsz/trzsz-ssh/cmd/tssh@main ``` |
28
huaxianyan 2023-09-03 11:33:26 +08:00
@LonnyWong 测试有效,辛苦了
|