Go 实现的 ssh 客户端 trzsz-ssh ( tssh ) 新版本支持批量登录,并支持批量执行预先指定的命令。

2023-07-22 23:20:40 +08:00
 LonnyWong

开源地址: https://github.com/trzsz/trzsz-ssh

1907 次点击
所在节点    程序员
28 条回复
yhrzpm
2023-07-23 03:20:36 +08:00
支持服务器分组吗
LonnyWong
2023-07-23 06:38:26 +08:00
@yhrzpm 现在还不支持分组。支持搜索,在 alias 命名上同一组有相同的前缀或后缀,就可以搜索出来选择。不过在搜索状态时,快捷键基本都要同时按下 Ctrl 键。
ruanimal
2023-07-23 10:38:02 +08:00
熬夜搞啊
ruanimal
2023-07-23 10:38:43 +08:00
@ruanimal 看错,忽略
LonnyWong
2023-07-23 11:42:03 +08:00
@ruanimal 其实也确实熬了不少夜。有些想法和代码,在脑子里不写出来的话,也很难受,会睡不着。
skiy
2023-07-23 13:37:06 +08:00
本来想用的,但要改 ~/.ssh/config ,我就不想用了。可以自定义配置文件路径吗?

我目前在用 sshmenu ( https://github.com/mmeyer724/sshmenu ),挺好用的,但不是二进制单文件,要依赖 python 环境,觉得不方便。
LonnyWong
2023-07-23 15:36:11 +08:00
@skiy 你可以在 ~/.ssh/config 的最前面,加一行 Include 另一个 config 文件,然后就可以在另一个 config 中配置了。
huaxianyan
2023-08-09 10:47:46 +08:00
我用了一段时间发现单靠 sshconfig 还是有一些局限性

比如我还是需要有一定的对服务器的额外信息标记以及对部分配置的屏蔽,最简单的例子就是给 git 配置了代理方便 git 通过 ssh 来使用,但是在列表中显示就看着难受

另外 tssh 在我这里的定位是对于不常用的机器会特别好用,这些机器已经配置了连接信息,但是因为不常用可能忘记了取的名字是啥,这时候用 tssh 打开列表就很好用

最后还有点强迫症就是 sshconfig 里配置时平常 ssh xxx 肯定用的全小写,因为区分大小写首字母大写很难受,但是在 tssh 里列出来首字母不大写的时候也很难受,要是有额外的配置项就好了
LonnyWong
2023-08-09 11:18:45 +08:00
@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
huaxianyan
2023-08-10 10:46:36 +08:00
@LonnyWong 用 * 有效,感谢!

? 也试过但是不生效,原因不知,不过有一个可以生效的就很好,这样我就可以在显示和使用上取得平衡了

最后想请问一下列表上下选择时终端会出提示音,有没有可以开关的选项?
LonnyWong
2023-08-10 11:20:54 +08:00
@huaxianyan 提示音,我已经去掉了,看来你还在用比较旧的版本,升级到 v0.1.9 看看?

tssh -V 可以看到当前版本。which tssh 可以看到使用哪个路径的 tssh ( 在 Windows 是 get-command tssh )。
LonnyWong
2023-08-10 11:21:58 +08:00
一开始不支持 ? 的,加上很久了,看来你在用的版本是很久以前的了。
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
```
LonnyWong
2023-08-10 11:46:52 +08:00
@huaxianyan 你这个报错应该是在服务器上运行了 trzsz 命令。

服务器上一般只用 trz 和 tsz 这两个命令,客户端才有可能需要用 trzsz 这个命令,你用 tssh 了,那客户端也不需要 trzsz 这个命令了。

如果你的客户端是 tssh 或者 trzsz ,也报了找不到 zenity ,那就是要手工安装一个 zenity ,如 yum install zenity 或 apt install zenity 等。
huaxianyan
2023-08-10 12:39:29 +08:00
@LonnyWong 在客户端安装了 zenity 后现在会提示
```
::TRZSZGO:TRANSFER:R:1.1.5:9164230543300
Cancelled
```
使用的环境是 Windows Terminal 配合 WSL1 ,服务端为 Ubuntu
LonnyWong
2023-08-10 13:08:06 +08:00
原来你是在 WSL 中使用 tssh 呀,那要在 Windows 中安装 tssh ,然后在 WSL 中使用 Windows 安装的 tssh.exe ,好像 .exe 还不能省略,应该也可以复制 tssh.exe 到 WSL 内使用。使用的配置不是 WSL 内的,你要复制到 C:\Users\xxx\.ssh\config 中。
LonnyWong
2023-08-10 15:42:21 +08:00
@huaxianyan 上面这个是否可以?
huaxianyan
2023-08-11 09:49:51 +08:00
@LonnyWong 我想应该是没问题的,本质上就是改用 Windows 的 SSH 来连了,这样我感觉不如给 Powershell 配置一套,直接从 PS 去连,省得从 WSL 里走一遍有点没必要

没有及时回复抱歉,我现在遇到一个很奇怪的问题,Windows 本身的 SSH 连接的时候调用密钥路径拼接不对,正反斜杠都有导致用不了,一直在解决这个事情(虽然还没有解决
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
```

类似这样
huaxianyan
2023-08-11 09:53:56 +08:00
@huaxianyan 抱歉解决了,把 .ssh 目录下的公钥删除就好了,虽然我不知道为什么会影响

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/958892

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX