V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ratazzi
V2EX  ›  分享创造

又写了个好玩的,利用 Cloudflare Durable Object 实现云端的 SSH 会话,浏览器里直接连接

  •  
  •   ratazzi ·
    ratazzi · 3 月 18 日 · 1394 次点击

    做了一个浏览器端的 SSH 客户端,不需要装任何插件或软件,打开网页就能连。

    核心思路是把 Rust 的 SSH 协议实现( fork 的 russh )编译成 WASM ,跑在 Cloudflare 的 Durable Object 里。

    DO 通过 cloudflare:sockets 直接建立 TCP 连接到目标 SSH 服务器,浏览器端只需要 WebSocket 。

    几个特点:

    • 支持密码和私钥认证( ed25519 、RSA 、ECDSA ),支持加密私钥
    • SSH 会话跑在 Durable Object 里,关掉浏览器再打开可以重新接入,终端输出不丢
    • 登录用 Passkey ( WebAuthn ),也有 Demo 模式可以直接体验
    • 前端 xterm.js + WebGL 渲染

    目前的限制:

    • 还不支持通过 cloudflared 连接内网 ip

    技术栈:Rust (WASM) + TypeScript (Hono) + Vite + Tailwind CSS ,部署在 Cloudflare Workers 上。 可以自己部署,只需要一个 Cloudflare 账号,免费额度就够用。

    GitHub: https://github.com/ratazzi/edgessh

    Demo: https://edgessh.hola.ac

    9 条回复    2026-03-20 15:23:50 +08:00
    hhacker
        1
    hhacker  
       3 月 18 日 via Android
    我记得 Durable object 不是持久化的
    ratazzi
        2
    ratazzi  
    OP
       3 月 18 日
    @hhacker 可以持续化一段时间
    samli12
        3
    samli12  
       3 月 19 日
    试了一下好像还行
    mcfever
        4
    mcfever  
       3 月 19 日
    这个 web ssh 的方案挺有意思,我做一个原生版本的 https://dartshell.com/
    codehz
        5
    codehz  
       3 月 19 日 via Android
    cloudflared 开的那个不是自带 web ssh 吗()
    ratazzi
        6
    ratazzi  
    OP
       3 月 19 日
    @codehz 对,本来一开始是想做一个纯浏览器的 ssh ,因为现有的 web ssh 都依赖一个服务端,需要 vps 来部署

    然后 chrome 的 connect 限制有点多,就用 cf 来做 connect ,就不需要 vps 了,做着做着就去玩了 Durable Object
    samsaraxy
        7
    samsaraxy  
       3 月 20 日
    @ratazzi 有部署教程吗
    lolo1
        8
    lolo1  
       3 月 20 日 via Android
    rdp 也可以搞下啊,也有 wasm 的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5517 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:59 · PVG 16:59 · LAX 01:59 · JFK 04:59
    ♥ Do have faith in what you're doing.