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

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

  •  1
     
  •   LonnyWong · 1 day ago · 4983 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 应用。

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

    不过,

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

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

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

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

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

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

    在 iPhone 中我用 rootshell + tsshd ,

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

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

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

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

    都支持掉线重连。

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

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

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

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

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

    也可以在服务器打开 yazi ,配置快捷键调用 tsz 下载文件。
    aka863
        43
    aka863  
       1 day ago   ❤️ 1
    最近开始用,挺好的,解决了以下我的痛点:
    1 、能简单的管理多个 ssh server
    2 、能记录密码,自动登录
    3 、解决了我的 MacBook 熄屏断连的问题
    4 、解决了传输文件需要使用 sftp 的问题
    感谢!!!
    xgdgsc
        44
    xgdgsc  
       1 day ago
    以前对这种有点需求,用过 et,现在 vscode remote 在 Windows modern standby 下好像也不会睡眠断开了,对这个需求不大了.
    EvineDeng
        45
    EvineDeng  
       1 day ago
    未来可以取代 openssh 吗
    EvineDeng
        46
    EvineDeng  
       1 day ago
    @LonnyWong #42 细说 yazi 快捷键如何设置怎么调用 tsz ?
    skywalker
        47
    skywalker  
       1 day ago
    看起来挺不错。有段时间我 mosh 很多,感觉在网络不稳定环境很好,后来放弃是因为我通过 frp 内网穿透访问,它需要设置一堆的 UDP 转发端口,如果有多台机器设置起来很麻烦,看了下楼主的这个实现好像也和 mosh 差不多需要 UDP 端口序列。另外 mosh/tmux 好像不支持 image preview ,有段时间我经常用 wezterm connect ,这个比较接近本地体验。现在用的比较多的是 zellij ,和 tmux 差不多,和 tssh 目标可能不同,tssh 在网络不稳定/漫游情况下更有用吧?如果网络稳定,tmux/zellij 这种 attach 一下其实问题也不大。
    LonnyWong
        48
    LonnyWong  
    OP
       1 day ago
    @EvineDeng #45 不取代 openssh ,共生关系,看 #16 或 README 中的介绍。
    LonnyWong
        49
    LonnyWong  
    OP
       1 day ago
    @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
        50
    LonnyWong  
    OP
       1 day ago
    @skywalker tsshd 比 mosh 强大,支持 UDP 转发,支持 ProxyJump ,不用你配置一堆 UDP 的东西。
    ilemon18
        51
    ilemon18  
       1 day ago
    搞点图片啊 那么多字谁看🤣
    LonnyWong
        52
    LonnyWong  
    OP
       1 day ago
    @ilemon18 tssh 有图,tsshd 还没想好截个什么样的图,太偏技术了。
    sofukwird
        53
    sofukwird  
       23h 28m ago
    网络掉线重连啥的加个 wireguard 就好了
    LonnyWong
        54
    LonnyWong  
    OP
       12h 32m ago
    @sofukwird 适用场景不同,wireguard 改整机路由,不适合与其他 VPN 共用,配置也复杂一些。
    kite12580
        55
    kite12580  
       9h 52m ago
    @LonnyWong #28 这样确实好不少。试了试,可惜支持不了不受我控制的跳板机
    LonnyWong
        56
    LonnyWong  
    OP
       9h 5m ago
    @kite12580 #55 不受控制的跳板机,确实难搞。

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

    2 、要能让 tsshd 监听一个 UDP 或 TCP 端口,并且防火墙没有拦截它。
    yangg
        57
    yangg  
       11 mins ago
    还是有问题哦,昨晚家里电脑 连接了 tssh 连接了云服务器,今天晚上回来断掉了,之前使用 et 和 mosh 时不会。还有如何查看当前选择的何种模式,比如 没有开 udp 端口时
    tkwl
        58
    tkwl  
       11 mins ago
    @LonnyWong 请问一下这个 tsshd 系统是怎么启动的,如何通过 ssh 调起 tsshd ?
    另外如果用 tssh 直接 tcp 登录,那么应该是直接走的 ssh 和 tsshd 就没关系了吧?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3308 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 13:28 · PVG 21:28 · LAX 06:28 · JFK 09:28
    ♥ Do have faith in what you're doing.