低延迟、支持漫游、不会掉线的 ssh(比同类 13K 多 star 的老项目,功能还要更强,体验也要更优) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
LonnyWong
V2EX    分享创造

低延迟、支持漫游、不会掉线的 ssh(比同类 13K 多 star 的老项目,功能还要更强,体验也要更优)

  •  
  •   LonnyWong 1 月 19 日 2712 次点击

    疯狂投入了十几个周末进行优化,在一个 issue 里和用户共讨论了 150 多楼,每周末都开发出一个新的 RC 版本,从 RC1 干到 RC11 ,终于发布了一个稳定版。

    作为一个新项目,知道的人还不多,现在才 100 多的 star ,却比同类老项目( mosh: 13k 多的 star )的功能强大很多,详见 README 里的功能对比。支持 多平台低延迟保持连接切换网络SSH X11 转发SSH Agent 转发SSH 端口转发输出上下滚动OSC52 复制粘贴多级 ProxyJumptmux -CC 集成等。

    欢迎大家来试用,与同类老项目 mosh 比较比较。在服务器安装 tsshd,在本地安装 tssh,然后使用下面的命令登录服务器即可:

    tssh --udp <服务器 IP 或别名> 

    注意 tsshd 默认随机监听 61001 - 61999 的 UDP 端口,防火墙要放开相应策略。支持在命令行指定 UDP 端口和 tsshd 安装路径,如下:

    tssh --udp --tsshd-path /path/on/server/tsshd --tsshd-port 10000-10010 xxx ( 和 ssh xxx 一样的效果,配置可写在 ~/.ssh/config 中,然后直接 tssh xxx 登录 ) 
    • 使用 tsshd ,你的 ssh 可以避免掉线(从此告别 ssh 在弱网环境下经常掉线的苦恼,无需经常重新登录)
    • 使用 tsshd ,你的 ssh 可以支持漫游(举例:你的笔记本在公司 ssh 登录后,带回到家还可以保持连接)
    • 使用 tsshd ,你的 ssh 可以获得低延迟(特别适用于海外服务器,避免 ssh 按键不跟手的情况)。tsshd 支持 KCP 协议(可以获得更稳定的更低的延迟),命令行通过 tssh --kcp xxx 启用,也支持配置指定 KCP 协议(默认使用传输吞吐量更高一些的 QUIC 协议)。

    作为 ssh 工具,tssh 和 tsshd 都很注重安全的,详见 README 里的安全介绍。欢迎各位大佬来分析评估其安全性。(说到安全,我周末基本都献给开源 了,CTF 界少了个 PWN 选手,开源界多了几个项目: trzsztsshtsshd 等)

    服务端开源(对标 mosh ,并提供相应 Client 库):tsshd https://github.com/trzsz/tsshd

    客户端开源(支持标准 ssh ,扩展了很多实用功能):tssh https://github.com/trzsz/trzsz-ssh

    38 条回复    2026-01-23 10:53:01 +08:00
    LonnyWong
        1
    LonnyWong  
    OP
       1 月 19 日
    dXA=
    yangg
        2
    yangg  
       1 月 19 日
    好奇,示例--udp 是否是推荐的写法?为啥没有写成默认参数
    LonnyWong
        3
    LonnyWong  
    OP
       1 月 19 日
    @yangg tssh 是对标标准 ssh 客户端的,不加 --udp 时,是完全兼容 openssh ,此时 tssh 可以直接代替 ssh 来使用,除了 tssh 额外提供的功能,和 ssh 没什么区别。

    tsshd 是对标 mosh 的,相当于 mosh 的 mosh-server ,也相当于 openssh 的 sshd 。

    tssh --udp 主要是给新用户临时体验的,如果用户想默认使用 tsshd 作为服务器,只要在 ~/.ssh/config 中配置 UdpMode yes 即可,这时就不需要加 --udp 参数了。
    yangg
        4
    yangg  
       1 月 19 日
    @LonnyWong 好的,谢谢。
    有时间体验下,前段时间还在想为啥我的 ssh 老是休眠断,原来是现在没有 mosh 了
    listenerri
        5
    listenerri  
       1 月 19 日
    感谢分享
    LonnyWong
        6
    LonnyWong  
    OP
       1 月 19 日
    @yangg 之前我用 ssh ,也是去吃个饭就断了。tssh 命令行参数就是为了临时体验用的,目的是体验时一般不用修改 ~/.ssh/config 配置。
    pursuer
        7
    pursuer  
       1 月 19 日
    用 tmux 就不用担心掉线和漫游问题了吧
    LonnyWong
        8
    LonnyWong  
    OP
       1 月 19 日
    @pursuer tmux 可以解决你在服务器运行的程序不用重新运行的问题。tsshd 可以解决你不用重新登录的问题,运行中的程序也不用重新运行,不依赖 tmux 等。
    molezznet
        9
    molezznet  
       1 月 19 日
    一直在用 tssh ,tsshd 是作者又开发了一个服务端了咯?
    pursuer
        10
    pursuer  
       1 月 19 日
    重新登录这个在 ssh 客户端上配一下就能一键登录,还能顺便并连接到 tmux ,也不是强需求的样子
    LonnyWong
        11
    LonnyWong  
    OP
       1 月 19 日
    @molezznet 是的,tsshd 是服务端,对标 mosh 的,tsshd 开发出来有 2 年了,不过前天发布的 tsshd v0.1.6 是一个成熟的版本的。之前的 tsshd 能解决低延迟的问题,断线重连是从 v0.1.5 才支持的,从 v0.1.6 开始稳定的。
    LonnyWong
        12
    LonnyWong  
    OP
       1 月 19 日
    @pursuer 如果你只在很好网络环境下 ssh ,并且不介意多登录一下,确实不是很强的需求。如果你在不太好的网络环境下 ssh ,你的延迟可能比较高(按键不跟手),网络太差(例如移动中的网络)导致你要频繁重登录,那 tsshd 就会很好用。
    w568w
        13
    w568w  
       1 月 19 日   1
    哎,本来想支持一下,发现早就 star 过了
    conical
        14
    conical  
       1 月 19 日 via Android
    @w568w +1
    Cola90
        15
    Cola90  
       1 月 19 日
    看着很不错,先 starlet
    craftsmanship
        16
    craftsmanship  
       1 月 19 日 via Android
    好奇问下 AI 辅助编程及完全 vibe coding 占比多少 以及是否有效?
    LonnyWong
        17
    LonnyWong  
    OP
       1 月 19 日
    @craftsmanship 近期有用 AI ,但 AI 写的代码占比极低。会让 AI 帮忙 review 我写的所有代码,AI 有时会发现一些超低级错误(避免测试时浪费时间),但 AI 很多时候都会乱说。少数功能会让 AI 先写,看 AI 的思路是否会给我启发,但更多时候都是我在指正 AI 的错误,大多数时候 AI 都会承认其错误,个别时候 AI 死都不认错,只能新开会话或换个 AI 。
    LonnyWong
        18
    LonnyWong  
    OP
       1 月 19 日
    @craftsmanship 对了,很多注释我会让 AI 帮我写,写得我满意的我就会采用。
    craftsmanship
        19
    craftsmanship  
       1 月 19 日 via Android
    @LonnyWong 顺便问一下 常用模型是什么呢?
    LonnyWong
        20
    LonnyWong  
    OP
       1 月 19 日
    @craftsmanship ChatGPT
    loveqianool
        21
    loveqianool  
       1 月 19 日 via Android   1
    很好用的,用很久了。
    MindMindMax
        22
    MindMindMax  
       1 月 19 日
    国内端口转发用 QUIC 、KCP 能行得通吗? QoS 严重呀。
    zagfai
        23
    zagfai  
       1 月 19 日
    虽然但是, 我用 tmux.
    zagfai
        24
    zagfai  
       1 月 19 日
    然后 ssh over vmess.:)
    LonnyWong
        25
    LonnyWong  
    OP
       1 月 19 日
    @MindMindMax 用户反馈正常使用时延迟下降了。在国内环境,跨境大流量转发,不是 tsshd 置力于解决的问题。
    LonnyWong
        26
    LonnyWong  
    OP
       1 月 19 日
    @zagfai 我也用 tmux ,不过 mosh 有 13k 多的 star ,这说明也有很多人喜欢 tmux 以外的解决方案的。
    MindMindMax
        27
    MindMindMax  
       1 月 19 日
    @LonnyWong 你理解错了,我说的就是国内跨网的问题,不涉境外通信的。
    LonnyWong
        28
    LonnyWong  
    OP
       1 月 19 日
    @MindMindMax 国内其实还好,很多游戏都是用 KCP 协议的,并且 QUIC 也是未来的方向。有 QoS ,但不是完全禁掉了 UDP 报文。还是要试用一段时间,自己感受一下,会更准确。
    LonnyWong
        29
    LonnyWong  
    OP
       1 月 19 日
    @MindMindMax 如果你所在的网络环境 QoS 特别严重,tsshd 还支持 TCP 模式,同样具备不会掉线和支持漫游的能力。
    MindMindMax
        30
    MindMindMax  
       1 月 19 日
    @LonnyWong 好的,我试试
    goodryb
        31
    goodryb  
       1 月 19 日
    请教下 “tsshd 默认随机监听 61001 - 61999 的 UDP 端口” ,这个为啥是随机监听,并且是一段端口,有点像是 ftp 的被动模式
    LonnyWong
        32
    LonnyWong  
    OP
       1 月 19 日
    @goodryb tsshd 是在指定的端口范围随机监听一个,客户端会连接这个端口。同一台机器你可以登录多次,每次登录都是一个独立的 tsshd 进程,每个 tsshd 进程独占一个端口。独立的进程和独立的端口,可以更简单地实现隔离,不同的用户登录同一台服务器时,互不干涉。
    goodryb
        33
    goodryb  
       1 月 19 日
    @LonnyWong #32 了解了,建议把使用文档可以在写完整一些,特别是对于没有使用过 mosh 的,比如我 哈哈
    LonnyWong
        34
    LonnyWong  
    OP
       1 月 19 日
    @goodryb 我抽空再优化一下
    Javin
        35
    Javin  
       1 月 21 日
    没看到支持 mac ,只能编译安装吗
    LonnyWong
        36
    LonnyWong  
    OP
       1 月 21 日
    @Javin 也可以在 release 中下载,我打算看到有把 mac 作为服务器的用户,再提交到 homebrew 去。
    zisen
        37
    zisen  
       1 月 23 日
    能不能指定 config 文件呢,默认的 config 文件不能乱动,动了 vscode 和 cursor 就连不上了
    LonnyWong
        38
    LonnyWong  
    OP
       1 月 23 日
    @zisen 1 、在默认的 ~/.ssh/config 配置时,可以加 #!! 前缀,就不影响 vscode 和 cursor 等了。

    2 、使用新的 config 配置文件,增加一个 ~/.tssh.conf 或者 $XDG_CONFIG_HOME/tssh/tssh.conf 文件,在里面指定 COnfigPath= ~/.ssh/my_new_config ,这时只读 ~/.ssh/my_new_config 配置,不读 ~/.ssh/config 配置。

    3 、扩展 ~/.ssh/config 配置,和第 2 步差不多,ConfigPath 换成 ExCOnfigPath= ~/.ssh/my_extend_config ,这里会既读 ~/.ssh/config 也读 ~/.ssh/my_extend_config 配置。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4450 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 07:16 PVG 15:16 LAX 23:16 JFK 02:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86