用 go 实现 ssh 客户端(千行左右的代码),一般人用到的 ssh 功能都已支持。

2023-06-03 23:58:21 +08:00
 LonnyWong

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

tssh 已实现 ssh 客户端常用的基本功能( 除了 ssh 端口转发 ),一般人用到的 ssh 功能都已支持,欢迎各位大佬试用。

两大额外功能( 亮点 ):

1 、支持选择( 搜索 )~/.ssh/config 中的服务器,进行登录。相当于 tssh 内置了服务器管理功能,并且类似 vim 的操作方式不需要用到鼠标。

2 、tssh 内置支持 trzsz ( trz / tsz ),这在 Windows 平台很有用,解决了 trzsz ssh 上传速度慢的问题。

PS:通过用 go 写一个 ssh 客户端,对 ssh 的原理了解更深入了,特别是 ProxyJump 和 ProxyCommand 相关逻辑。

4695 次点击
所在节点    程序员
33 条回复
LonnyWong
2023-06-04 10:13:28 +08:00
@Monad ProxyCommand 其实是经过了 stdin 和 stdout 的,这个我严重怀疑是 Windows 的锅,不管什么程序的 stdin 都超级慢。这也是 https://github.com/trzsz/trzsz-go 在 Windows 中上传慢的根本原因。
LonnyWong
2023-06-04 10:15:40 +08:00
@bequt 支持 cmd 和 powershell 的,没弹出也没有报错?方便截个图看看?
Monad
2023-06-04 10:17:21 +08:00
@LonnyWong 嗯 不过走 ProxyJump 的话 登陆的时候延迟高了起来,不过因为只有开始的时候延迟到也能接受。
bequt
2023-06-04 10:38:48 +08:00
@LonnyWong 可以用,没问题。

但是为啥 icon 是乱码呢。。。。
![20230604-103722.jpg]( https://pic.sl.al/gdrive/pic/2023-06-04/647bf92257bf6.jpg)
LonnyWong
2023-06-04 10:47:44 +08:00
@bequt 字符集编码不是 UTF-8 的?
bequt
2023-06-04 11:03:10 +08:00
@LonnyWong 感觉不像,也不知道什么情况,凑合着用吧。已 star

![screenshot-20230604-110231.png]( https://pic.sl.al/gdrive/pic/2023-06-04/647bfee479062.png)
whisper98
2023-06-04 11:04:18 +08:00
我是一个想参与开源项目的 gopher ,不知道 op 需不需要人帮忙😂
LonnyWong
2023-06-04 11:30:10 +08:00
@whisper98 热烈欢迎参与。现在 trzsz 相关的 go 开源有两个项目:

1 、https://github.com/trzsz/trzsz-ssh 就是这个 tssh 项目,计划会将 ssh 客户端的常用功能用 go 都实现出来。
我计划下周末搞的是 -L -R -D -W 这几个 ssh 端口转发相关的功能。

2 、https://github.com/trzsz/trzsz-go 是这个 tssh 依赖的项目,主要实现 trz / tsz 上传和下载。
有几个功能想加的:
2.1 https://github.com/trzsz/trzsz-go/issues/28 中说到的第 7 点。
2.2 https://github.com/trzsz/trzsz-go/issues/27 中说到的第 1 点,在用户 ctrl + c 中止时,弹出个确认窗口,一方面可以选择删除已传部分或保留,一方面防止误触。
2.3 https://github.com/trzsz/trzsz-go/issues/10 说到的断点续传功能,这个改动量稍微有点大。
Wdafff
2023-06-04 11:43:09 +08:00
安装后:trz: The term 'trz' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
LonnyWong
2023-06-04 11:46:17 +08:00
samondlee
2023-06-05 08:56:22 +08:00
你好,如果服务器地址是域名的话,是否支持优先解析 AAAA IPV6 地址呢。
LonnyWong
2023-06-05 09:21:41 +08:00
@samondlee 建连接是这一行: https://github.com/trzsz/trzsz-ssh/blob/e5fd8424f371fc35243d23b7afb1e784b956af07/login.go#L526

第一个参数是 tcp ,并没有指定 tcp4 或 tcp6 ,按理说是优先 ipv6 的。
LonnyWong
2023-08-08 12:05:11 +08:00
@dianso @scyuns 已支持批量登录和 tmux 分屏

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

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

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

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

© 2021 V2EX