为什么服务端应用一定要长在浏览器里?试试基于 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 应用。

5020 次点击
所在节点    程序员
64 条回复
yangg
1 天前
需要另外开端口吗?
tmux 那种一个会话新开一个窗口的功能或者临时分屏有计划吗?
LonnyWong
1 天前
@yangg 要开 UDP 端口的(在 UDP 受限的网络也支持 TCP 端口),协议上是支持开多个 session 的,不过 tssh 客户端要实现这个比较复杂,还不好与其他终端集成,所以暂时没有计划。看以后的发展吧,需求大的话,甚至可以 tssh 客户端自己实现分屏功能。
Tiberisino
1 天前
现在这个时代 做的项目仓库说明一定要有 ui 截图
swananan
1 天前
我一直是 tmux 重度用户,暂时还没有特别的痛点,不过我很乐意尝试新的东西来提升自己的效率
下面是除了 tmux 现有的特点以外,我很喜欢的功能:
tmux 命令进入滚动模式,然后 vim 操作,很方便,而且还支持快速复制(越说越喜欢)
tmux 支持记录 layout 这些,我可以通过脚本持久化 tmux 状态,并且一键恢复(比如服务端宕机这种场景)
LonnyWong
1 天前
@swananan 我也是 tmux 重度用户,不过我用 iTerm2 + tmux -CC ,我日常开发就用这个。

不过,

当我在 iPhone 上想临时登录一下服务器,我会用 rootshell + tsshd ,在移动中使用很爽。

当我要登录海外服务器时,我会用 tssh + tsshd ,低延迟很舒适,不用再忍受按个键等半天的痛苦。
LonnyWong
1 天前
@Tiberisino 想截的,但断线重连好像在截图上不容易看出优势。

除非用 AI 搞一个,拿着笔记本或手机坐电梯、地铁等,SSH 不掉线的视频?
kite12580
1 天前
@LonnyWong #6 毕竟我不是专家,而且系统 sshd 爆了漏洞我不背锅。不过是好想法,点个赞。目前靠的是 autossh + tmux auto attach 勉强用
LonnyWong
1 天前
@kite12580 tsshd 本身不提供登录服务的,也是背靠 sshd ,详见 #16 。

先用传统 ssh 登录后,再启动的 tsshd 进程,我只要保证 tsshd 自己的 UDP 通讯是安全的就好了。而这通讯又是基于 QUIC ,背的 TLS1.3 的。

在使用 KCP 协议时,也是使用 AES-GCM-256 加密,并且每小时或每流量达到 1GB 时,就通过 ECDH 换一次密钥,确保前向安全。
yangg
1 天前
@LonnyWong 那就还是得+tmux
而 tmux 滚动及一屏以外的体验实在是一般

要是能一个应用替换两个应用,体验也好那就好了
LonnyWong
1 天前
@yangg 我是都用,日常开发我是用 iTerm2 + tmux -CC 。

在 iPhone 中我用 rootshell + tsshd ,

海外服务器用 tssh + tsshd (低延迟)。
LonnyWong
1 天前
@yangg @swananan 补充一点:

tsshd 和 tmux 不冲突,可以同时用,双重不掉线保证,外加低延迟。
swananan
1 天前
@LonnyWong tssh 我在用了,挺好的
stiekel
1 天前
仿佛回到了 telnet 时代。
yangg
1 天前
好,你这个跟 et 有点类似,有什么优势和异同
LonnyWong
1 天前
@stiekel 时代不同了,现在用 bubbletea 写的终端应用很漂亮的。
Immortal
1 天前
怎么感觉很多人连 RREAME 都没耐心看完,这个和 tmux/screen 完全不是一个需求的东西
LonnyWong
1 天前
@yangg 我还是第一次知道 Eternal Terminal ,简单看了一下,确实很像。

et 使用的是 TCP 协议,固定使用 2022 一个端口。

tsshd 使用 UDP 协议,每个会话一个独立端口。

都支持掉线重连。

et 是自定义 TCP 协议,tssh 复用 QUIC 和 KCP 协议,tsshd 的延迟会更低。

tsshd 还是一个中间件,大家可以基于 tsshd 开发自己的 SSH 应用。

更多的还没细看,看来我要关注一下 et 。
tkwl
1 天前
@LonnyWong 如果是云上的服务器,需要指定可用的端口段吗?是否需要配合防火墙打开相应端口
LonnyWong
1 天前
@tkwl 对的,需要指定端口和放开防火墙,端口可以放开一个或多个或一段。

支持 UDP 和 TCP ,首选 UDP ,TCP 只在迫不得已时才选。
RogerReal
1 天前
2 年 tssh 用户来试试

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

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

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

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

© 2021 V2EX