V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
LonnyWong
V2EX  ›  程序员

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

  •  1
     
  •   LonnyWong · 7h 46m ago · 3388 views

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

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

    为什么是 tssh ?

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

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

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

    • 无感重连:电脑合盖带走,换个地方打开,之前的会话依然活跃,状态完全不丢。
    • 极致低延迟:在丢包严重的网络下,UDP 的交互手感比 TCP 强太多,敲指令不会有那种“粘滞感”。
    • 跨平台接入:用户只需要一个 tssh + 任意终端,就完美支持 Windows/macOS/Linux ,甚至在 iPhone 上通过 rootshell 也能流畅访问。

    应用(抛砖引玉)

    • AI 交互新界面:给你的 LLM 加个 SSH 壳子,在任何终端随时 tssh 呼出,比网页响应更快,更极客。
    • “不掉线”的系统:那些需要实时盯着数据的监控看板或管理后台,用 tsshd 做成交互式菜单,随身查看。
    • 内网穿透与转发:不仅支持 TCP 转发,还支持 UDP 转发,底层切换网络上层业务无感知。

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

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

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

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

    44 replies    2026-05-07 15:06:57 +08:00
    churchmice
        1
    churchmice  
       7h 40m ago via Android
    现在这轮子真是造的飞起
    你那点需求 tmux 够用了
    LonnyWong
        2
    LonnyWong  
    OP
       7h 38m ago
    @churchmice tmux 就完美了吗?看看这个吧: https://bower.sh/you-might-not-need-tmux
    sir283
        3
    sir283  
       7h 30m ago
    怎么感觉你这东西,还没我这俩用 Ai 改的要实用呢?

    ======================================

    宇宙超级无敌,音乐下载器,支持无损音乐文件下载、批量下载、一键下载,支持歌单下载。
    支持酷狗、酷我、QQ 音乐、网易云、咪咕等音乐平台音乐搜索、下载。支持无损音乐文件下载。
    https://github.com/MrsEWE44/musicDownload


    ======================================

    轻风支持在 Dhizuku 模式下,强力删除无用的系统软件,强力冻结软件,一键静默安装软件,批量处理软件,系统软件恢复等等,还有更多功能没有写出来,赶紧下载体验吧!

    软件支持在安卓 10 以上系统,在 Shizuku 模式免 ROOT 情况下,对手机网络进行管控,也可以管理摇一摇传感器的权限,精准控制单个应用,也支持批量管理。

    https://github.com/MrsEWE44/easyManager/tree/md5
    kite12580
        4
    kite12580  
       7h 29m ago
    看过几次这个项目,主要还是装别的 ssh server 担心安全问题
    LonnyWong
        5
    LonnyWong  
    OP
       7h 28m ago
    tsshd 无需任何操作,会话一直在线,可以往上滚看历史输出。

    tmux 要重登录,要 attach ,看历史输出(一屏以外的)要用命令。
    LonnyWong
        6
    LonnyWong  
    OP
       7h 25m ago
    @kite12580 #4 开源的,代码量也不大,你可以用 AI 帮忙评估其安全性。
    yolee599
        7
    yolee599  
       7h 7m ago via Android
    ssh 是第一道门,最主要的是安全性和漏洞,其他都是次要的
    kapr1k0rn
        9
    kapr1k0rn  
       6h 59m ago
    96368a
        10
    96368a  
       6h 36m ago
    一直在用 trzsz-ssh ,好用的😂
    LonnyWong
        11
    LonnyWong  
    OP
       6h 27m ago
    @kapr1k0rn #9 Wish 是传统 SSH ,网络抖动就断线、切个 Wifi 就卡死,或休眠唤醒基本上就断了。

    tsshd 是 UDP 协议的,类似 mosh ,基于 tsshd 的应用自动获得不掉线和低延迟的能力。
    Mrun
        12
    Mrun  
       6h 20m ago
    传统的 ssh ,有着大量的安全审计和庞大的开源社区,核心技术公司帮忙盯着漏洞。你这个感觉安全还是太单薄了
    kapr1k0rn
        13
    kapr1k0rn  
       6h 14m ago
    不好意思前面没仔细看,所以你这个工具替代的是 sshd server ?
    rich1e
        14
    rich1e  
       6h 13m ago
    挺好的项目,中英文档都有。
    ntdll
        15
    ntdll  
       6h 10m ago
    如果解决的核心痛点只是 [不掉线和低延迟的能力]

    其实只需要通过一些 Zero trust 方案接入 SSH 就行了,顺带还提高的安全性。

    这类方案不论是开源、闭源,收费、免费的都有不少成熟的选择。

    比如 Cloudflare Tunnel 、Zerotier 、Wireguard 都是可行的。
    LonnyWong
        16
    LonnyWong  
    OP
       6h 4m ago
    @Mrun @kapr1k0rn tsshd 不提供登录服务,要通过传统 ssh 登录,然后启动一个 tsshd 进程,一次登录就是一个独立的 tsshd 进程,tsshd 进程会监听一个 UDP 端口用于后续通讯。

    tsshd 支持 QUIC 和 KCP 协议,密钥是启动时临时生成的一次性会话密钥,通过传统 ssh 通道发送给 tssh 客户端。
    chengdonghui
        17
    chengdonghui  
       5h 57m ago
    这个需求,ssh+screen 应该也可以解决吧
    LonnyWong
        18
    LonnyWong  
    OP
       5h 55m ago
    @chengdonghui #17 有区别:

    tsshd 无需任何操作,会话一直在线,可以往上滚看历史输出。

    tmux 或 screen 要重登录,要 attach ,看历史输出(一屏以外的)要用命令。
    JZen
        19
    JZen  
       5h 50m ago
    牛逼,支持
    laydown
        20
    laydown  
       5h 36m ago
    目前 ttyd 用着很舒服。支持造更多的轮子,有对比也不错。
    yangg
        21
    yangg  
       4h 53m ago
    需要另外开端口吗?
    tmux 那种一个会话新开一个窗口的功能或者临时分屏有计划吗?
    LonnyWong
        22
    LonnyWong  
    OP
       4h 48m ago
    @yangg 要开 UDP 端口的(在 UDP 受限的网络也支持 TCP 端口),协议上是支持开多个 session 的,不过 tssh 客户端要实现这个比较复杂,还不好与其他终端集成,所以暂时没有计划。看以后的发展吧,需求大的话,甚至可以 tssh 客户端自己实现分屏功能。
    Tiberisino
        23
    Tiberisino  
       4h 46m ago
    现在这个时代 做的项目仓库说明一定要有 ui 截图
    swananan
        24
    swananan  
       4h 45m ago
    我一直是 tmux 重度用户,暂时还没有特别的痛点,不过我很乐意尝试新的东西来提升自己的效率
    下面是除了 tmux 现有的特点以外,我很喜欢的功能:
    tmux 命令进入滚动模式,然后 vim 操作,很方便,而且还支持快速复制(越说越喜欢)
    tmux 支持记录 layout 这些,我可以通过脚本持久化 tmux 状态,并且一键恢复(比如服务端宕机这种场景)
    LonnyWong
        25
    LonnyWong  
    OP
       4h 38m ago
    @swananan 我也是 tmux 重度用户,不过我用 iTerm2 + tmux -CC ,我日常开发就用这个。

    不过,

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

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

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

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

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

    要是能一个应用替换两个应用,体验也好那就好了
    LonnyWong
        30
    LonnyWong  
    OP
       4h 11m ago
    @yangg 我是都用,日常开发我是用 iTerm2 + tmux -CC 。

    在 iPhone 中我用 rootshell + tsshd ,

    海外服务器用 tssh + tsshd (低延迟)。
    LonnyWong
        31
    LonnyWong  
    OP
       4h 4m ago
    @yangg @swananan 补充一点:

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

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

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

    都支持掉线重连。

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

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

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

    支持 UDP 和 TCP ,首选 UDP ,TCP 只在迫不得已时才选。
    RogerReal
        40
    RogerReal  
       2h 10m ago
    2 年 tssh 用户来试试
    iyezi
        41
    iyezi  
       2h 2m ago
    我一直想给 tssh 加个 TUI 的 SFTP 面板/通过本地编辑器打开文件自动上传功能,以后会有相关计划吗?
    LonnyWong
        42
    LonnyWong  
    OP
       1h 51m ago   ❤️ 1
    @iyezi 可能会有。不过也有一些现成的很帅的文件管理工具,如 yazi 。

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

    也可以在服务器打开 yazi ,配置快捷键调用 tsz 下载文件。
    aka863
        43
    aka863  
       1h 5m ago   ❤️ 1
    最近开始用,挺好的,解决了以下我的痛点:
    1 、能简单的管理多个 ssh server
    2 、能记录密码,自动登录
    3 、解决了我的 MacBook 熄屏断连的问题
    4 、解决了传输文件需要使用 sftp 的问题
    感谢!!!
    xgdgsc
        44
    xgdgsc  
       57 mins ago
    以前对这种有点需求,用过 et,现在 vscode remote 在 Windows modern standby 下好像也不会睡眠断开了,对这个需求不大了.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5628 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 08:04 · PVG 16:04 · LAX 01:04 · JFK 04:04
    ♥ Do have faith in what you're doing.