为什么服务端应用一定要长在浏览器里?试试基于 SSH 开发“永不断线”的终端应用

1 天前
 LonnyWong

在这个万物皆可 Web 化的时代,我们似乎忘了终端才是程序员最亲近的 UI 。

如果你的应用(比如 AI 助手、监控工具、内网穿透)需要极致的低延迟和高稳定性,不如尝试挂在 tssh上。

为什么是 tssh ?

传统的 SSH 痛点:网络抖动就断线、切个 Wifi 就卡死,或休眠唤醒基本上就断了。

tsshd 是类似 mosh 的工具,底层使用 UDP (KCP / QUIC) 协议,解决了 SSH 的痛点,也解决了 mosh 的硬伤(支持滚动和端口转发等)。

同时 tsshd 也是一个 go 应用框架,你可以基于它开发各种 SSH 应用,自带抗掉线低延迟属性:

应用(抛砖引玉)


其实只要是 HTTP 能干的事,SSH 都能干。如果你厌倦了为了一个小工具去折腾前端框架、配置域名证书,不如回归终端,玩点不一样的。

开源地址: https://github.com/trzsz/tsshd

中文文档: https://trzsz.github.io/cn/tsshd

欢迎大家提建议,分享在终端里用过哪些有趣的 SSH 应用。

5038 次点击
所在节点    程序员
65 条回复
iyezi
1 天前
我一直想给 tssh 加个 TUI 的 SFTP 面板/通过本地编辑器打开文件自动上传功能,以后会有相关计划吗?
LonnyWong
1 天前
@iyezi 可能会有。不过也有一些现成的很帅的文件管理工具,如 yazi 。

可以本地打开 yazi ,配置快捷键调用 tssh 上传文件,你调起 tssh 进程时,tssh 进程会让你选服务器,选择后自动上传(通过 yazi 快捷键对应的命令指定),

也可以在服务器打开 yazi ,配置快捷键调用 tsz 下载文件。
aka863
1 天前
最近开始用,挺好的,解决了以下我的痛点:
1 、能简单的管理多个 ssh server
2 、能记录密码,自动登录
3 、解决了我的 MacBook 熄屏断连的问题
4 、解决了传输文件需要使用 sftp 的问题
感谢!!!
xgdgsc
1 天前
以前对这种有点需求,用过 et,现在 vscode remote 在 Windows modern standby 下好像也不会睡眠断开了,对这个需求不大了.
EvineDeng
1 天前
未来可以取代 openssh 吗
EvineDeng
1 天前
@LonnyWong #42 细说 yazi 快捷键如何设置怎么调用 tsz ?
skywalker
1 天前
看起来挺不错。有段时间我 mosh 很多,感觉在网络不稳定环境很好,后来放弃是因为我通过 frp 内网穿透访问,它需要设置一堆的 UDP 转发端口,如果有多台机器设置起来很麻烦,看了下楼主的这个实现好像也和 mosh 差不多需要 UDP 端口序列。另外 mosh/tmux 好像不支持 image preview ,有段时间我经常用 wezterm connect ,这个比较接近本地体验。现在用的比较多的是 zellij ,和 tmux 差不多,和 tssh 目标可能不同,tssh 在网络不稳定/漫游情况下更有用吧?如果网络稳定,tmux/zellij 这种 attach 一下其实问题也不大。
LonnyWong
1 天前
@EvineDeng #45 不取代 openssh ,共生关系,看 #16 或 README 中的介绍。
LonnyWong
1 天前
@EvineDeng #46

# ~/.config/yazi/keymap.toml

[[mgr.prepend_keymap]]
on = [ "z" ]
run = 'shell --block -- tsz -r "%h"'
desc = "Send file with tsz"

[[mgr.prepend_keymap]]
on = [ "Z" ]
run = 'shell --block -- tsz -r %s'
desc = "Send selected files with tsz"

第一个单选,第二个多选。我没测试过的,有问题你再找我。
LonnyWong
1 天前
@skywalker tsshd 比 mosh 强大,支持 UDP 转发,支持 ProxyJump ,不用你配置一堆 UDP 的东西。
ilemon18
1 天前
搞点图片啊 那么多字谁看🤣
LonnyWong
1 天前
@ilemon18 tssh 有图,tsshd 还没想好截个什么样的图,太偏技术了。
sofukwird
1 天前
网络掉线重连啥的加个 wireguard 就好了
LonnyWong
14 小时 37 分钟前
@sofukwird 适用场景不同,wireguard 改整机路由,不适合与其他 VPN 共用,配置也复杂一些。
kite12580
11 小时 57 分钟前
@LonnyWong #28 这样确实好不少。试了试,可惜支持不了不受我控制的跳板机
LonnyWong
11 小时 10 分钟前
@kite12580 #55 不受控制的跳板机,确实难搞。

1 、要有个地方放 tsshd 二进制,不需要 root 用户,可以放在任意地方,但是登录后要能执行它。

2 、要能让 tsshd 监听一个 UDP 或 TCP 端口,并且防火墙没有拦截它。
yangg
2 小时 16 分钟前
还是有问题哦,昨晚家里电脑 连接了 tssh 连接了云服务器,今天晚上回来断掉了,之前使用 et 和 mosh 时不会。还有如何查看当前选择的何种模式,比如 没有开 udp 端口时
tkwl
2 小时 15 分钟前
@LonnyWong 请问一下这个 tsshd 系统是怎么启动的,如何通过 ssh 调起 tsshd ?
另外如果用 tssh 直接 tcp 登录,那么应该是直接走的 ssh 和 tsshd 就没关系了吧?
yangg
55 分钟前
@yangg 有一台服务器都没装 tsshd 也可以直接使用 tssh 连接,这样都不知道是否真的用上了 tssh 的重连功能
LonnyWong
50 分钟前
@yangg 文档中有写,你要加参数 --udp 或 --kcp ,或者在 ~/.ssh/config 中配置 #!! UdpMode yes 才会用 tsshd

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

https://study.congcong.us/t/1210713

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

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

© 2021 V2EX