logo NodeSeekbeta

CloudSSH 开源项目:借助 Cloudflare Workers 打造免费且功能强大 Web SSH 终端,用浏览器远程管理服务器,连接信息云端同步 + AI Agent智能运维,一键部署还不花一分钱

CloudSSH —— 浏览器里的 Serverless Web SSH,打开即连

基于 Cloudflare Workers + Durable Objects 构建的开源 Web SSH 工具,自研纯 TypeScript SSH-2.0 协议栈。终端、文件管理、在线编辑和 AI 运维助手,都放进浏览器里,无需为 Web SSH 服务额外维护 VPS 或容器。

本文按 v2.6.2 更新。

视频演示:Bilibili
在线体验:生产版 · 测试版
GitHub:newbietan/CloudSSH


起因

手机收到服务器告警,手边没有 SSH 客户端;临时借台电脑,又得装工具、配密钥。只是想快速看一眼服务状态,却要在终端、文件传输工具和配置之间来回切换——尤其是在手机上,软键盘遮挡、中文输入异常和快捷键缺失更让人头疼。

还有一些更实际的场景:服务器藏在内网,需要经过跳板才能访问;HomeLab 没有公网 IP;想临时让同事帮忙排查,却不想直接交出密码或私钥。

所以做了 CloudSSH:打开浏览器,连上服务器,开始处理问题。

核心能力一览

自研 SSH 协议栈,不依赖第三方 SSH 库

使用纯 TypeScript 实现 SSH-2.0 协议栈,基于 Web Crypto API 完成核心加密操作。

支持 Curve25519/ECDH 密钥交换、AES-256-GCM/CTR 加密,以及密码、Ed25519/ECDSA/RSA 私钥认证。还支持 RFC 4256 keyboard-interactive 多轮交互认证,可处理服务器提供的密码、OTP 和多因素认证提示。

浏览器不只是一个终端界面,背后是一套运行在 Cloudflare 上的 SSH 实现。

公网直连、多级跳板和 Cloudflare Tunnel

根据服务器所在的网络环境,可以选择不同连接方式:

  • 公网直连:连接 Cloudflare 能直接访问的 SSH 服务器。
  • 多级跳板:登录后,为已保存服务器配置最多 3 台跳板,通过标准 RFC 4254 direct-tcpip 通道逐层连接内网目标。无需在跳板安装 ssh、nc 或 socat 等辅助工具,但跳板服务端需要允许 TCP 转发。
  • Cloudflare Tunnel:在内网部署 cloudflared 后,可以连接没有公网 IP、没有开放公网 SSH 入站端口的服务器,适合 HomeLab、NAS 和私有开发机。支持可选的 Zero Trust Service Token 鉴权。

终端、SFTP 和 AI Agent 都可以复用目标服务器的 SSH 连接能力。跳板链中的每一跳独立认证,主机指纹也按完整连接路径隔离。

SFTP 文件管理,不只是上传和下载

内置图形化文件管理器,支持目录浏览、路径面包屑、绝对路径输入、文件名/大小/时间排序,以及多选、Shift 连选、批量下载和删除。

文件传输方面,支持:

  • 上传断点续传,失败或取消时保留部分文件;
  • 在远端校验工具可用时进行 SHA-256 完整性校验;
  • 非空目录递归删除;
  • 下载队列和上传取消;
  • 新建文件、目录、重命名等日常操作。

同时集成 CodeMirror 在线编辑器:可直接编辑不超过 2MB 的 UTF-8 文本文件,支持语法高亮、保留 BOM 和换行符,保存前检查远端文件是否发生变化,避免不知情地覆盖修改。GBK/GB18030 内容可尝试解码为只读查看。

如果更习惯终端里的传输方式,也支持 trzsz 的 trz / tsz、拖拽上传、目录传输和续传;这部分需要远端安装 trzsz。

AI Agent:从“回答问题”到辅助执行运维任务

支持 BYOK,自带 API Key 接入 标准 Responses API 服务。可使用具备相应能力的 OpenAI、OpenRouter 或其他兼容平台与模型,不兼容仅提供 Chat Completions 的接口。

目前提供 8 项工具能力:

  • 执行 SSH 命令;
  • 读取终端上下文;
  • 请求风险操作确认;
  • 检查进程;
  • 管理 systemd 服务;
  • 管理 Docker;
  • 探测服务器环境;
  • 只读获取公开网页或 API 内容。

选中终端报错即可附加给 AI 提问,也可以利用服务器工作记录和知识备忘,减少反复描述环境的时间。长任务支持分步处理、上下文检查点和受限的响应续接。

安全方面,明确禁止的命令直接拦截;默认交互模式下,风险操作先请求确认。上下文和执行事实由 CloudSSH 自行维护,请求使用 store: false,不依赖上游保存的响应链。

移动端不只是“能打开”

针对手机和平板,提供动态视口、软键盘与安全区适配、响应式终端字号、iOS 中文输入法兼容,以及触屏快捷键栏。

Ctrl、Alt、Esc、Tab、方向键、Home/End、PgUp/PgDn 都可以直接操作;选区复制、粘贴、SFTP 和 Agent 也有对应的移动交互。

页面从后台返回时,会主动验证 WebSocket 是否仍然有效,并按会话条件进行恢复或重连,而不是仅凭浏览器显示“连接还在”就继续发送输入。

一次性分享,临时协作不用直接交出凭据

登录用户可以为已保存、完成主机指纹验证的服务器创建一次性分享链接。

链接不包含服务器密码或私钥,只能领取一次,并支持领取期限、会话时限、实时撤销,以及终端输出和 SFTP 操作审计。分享会话仅开放终端和按策略允许的 SFTP,不开放 AI Agent。

在浏览器支持可靠设备身份绑定的情况下,短暂断网还可以在限定宽限期内恢复原会话。

分享链接应像临时密码一样保护。分享不是只读沙箱,接收者可能拥有对应 SSH 账号的操作权限;输出与 SFTP 审计也不能替代目标服务器上的完整安全审计。

常用服务器和命令,也一起管理起来

支持服务器标签、搜索筛选、最近连接排序、配置克隆,以及多会话标签页管理。标签页可以重命名、克隆或批量关闭,终端历史支持搜索和文本导出。

常用命令可以保存为片段,并使用 {{变量}} 占位符,在填入终端前录入参数,减少重复输入。

界面提供简体中文、繁體中文和英文三种语言。

Theme V4:终端工具也可以有自己的审美

当前提供 4 款内置主题:

  • Standard Dark
  • Standard Light
  • Cyberpunk
  • Liquid Glass

搭配液态分段切换器,以及渐变、网格、扫描线、辉光、噪点等可配置效果,可以打造不同风格的界面。

在线主题编辑器支持实时预览并导出主题 JSON,再上传到自己的 CloudSSH。最多可管理 20 套自定义主题;登录用户支持云端跨设备同步,匿名用户保存在当前浏览器。

主题通过声明式配置和白名单校验实现,不执行用户提供的 CSS 或 JavaScript。

安全设计要点

  • 主机密钥与 TOFU 指纹验证:默认校验主机密钥签名,首次连接展示指纹;已知指纹发生变化时阻断连接,需明确确认后更新。首次指纹仍建议通过可信渠道核对。
  • 已保存凭据加密存储:服务器密码和私钥在服务端以 AES-256-GCM 加密保存;一键连接使用短期一次性令牌,不把已解密的凭据回传浏览器。
  • 双段传输保护:浏览器到 Cloudflare 使用 HTTPS/WSS,Cloudflare 到目标服务器使用 SSH 加密连接。
  • SSRF 与 DNS Rebinding 防护:对 Cloudflare 直接访问的目标执行私有、回环及保留地址检查,并通过 DoH 校验域名解析结果;内网访问通过合法跳板链或 Tunnel 配置完成。
  • 可选登录与访问控制:支持 GitHub OAuth 和数字用户 ID 白名单,也支持单管理员密码登录。密码模式与 GitHub 模式互斥,配置管理员密码哈希后优先启用密码模式;可进一步要求登录后才能连接。
  • 可选 Turnstile 与空闲超时:可以加入人机验证;默认 30 分钟无用户操作后关闭 SSH 会话,减少长期挂机占用,时长可配置。

部署方式

推荐通过 Cloudflare 的 Git 集成部署:

  1. Fork 仓库 → Cloudflare Dashboard → Workers & Pages → Connect to Git
  2. 构建命令填 pnpm run build:frontend,保存部署即可
  3. 获得 *.workers.dev 域名,可绑自定义域名

不配置登录方式时,可以保留匿名直连;保存服务器、跳板、分享和 AI 配置等功能需要登录。

完整配置说明请查看项目 README。

相关链接

资源 地址
GitHub 仓库 https://github.com/newbietan/CloudSSH
生产环境体验 https://ssh.newbietan.cn/
测试版(最新功能预览) https://sshtest.newbietan.cn/
在线主题编辑器 https://newbietan.github.io/CloudSSH/theme-editor/
更新日志 https://github.com/newbietan/CloudSSH/blob/main/CHANGELOG.md
视频演示 https://www.bilibili.com/video/BV1UgMt6UEdF

视频展示部分功能,最新界面和能力以当前版本及更新日志为准。

觉得有用的话,欢迎去 GitHub 点个 Star,也欢迎反馈问题、提交改进。


  • xhj003

  • 看上去不错

  • @sinstar #2 代码全部开源,可部署在自己的cloudflare账户,所有数据都保存在你的cloudflare,项目有天然用户隔离,保存的服务器隐私信息只在worker中流转,以下情况会被入侵:1.攻破Cloudflare 平台;2.你的 Cloudflare 账号被盗;3.你电脑的本身的输入环境就不可信,与项目无关系。总结一下:这个项目与你的服务器安全没直接关系,当且仅当你将你的服务器凭证等信息保存在这个项目(即保存到你自己cloudflare的DO中)存在风险。

  • 这个好东西

  • 好项目star了

  • 字太多了,我如何信任这个软件?而不是让它成为一个额外的攻击面?

  • 太复杂 还是ttyd最香喷喷了 xhj020

  • 能否支持 ed25519_sk 密钥

  • @A7urT6s9dmV3pR8 #4 这个项目和ttyd准确来说不算一个赛道,ttyd属于本地ssh的一种,这个是云端的,主打免下载0部署成本,服务器信息同步,应急使用

  • @Metz #5 不行,架构上很难实现,这个项目是一个WebSSH工具,属于服务器代理类型,只不过由cloudflare进行转发而已

  • 之前用过类似的worker wenshh,但没有手机优化,这个有手机触摸优化,看看能不能抛弃termius

  • @81-physics #8 基于CF Worker部署的WebSSH应该全网最先采用这种方案的就是我的仓库了,也是刚探索出来不久,几个月不到,不过我一直在维护,短时间内也会一直维护

  • @81-physics #8 不用抛弃termius,显然termius具备更多的优势,不过就是收费,这个可以自己部署一个留着备用,反正也不需要自己维护,我仓库配置有自动同步的工作流,配置好了,可以同步我发布的版本自动更新

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有73055位seeker

🎉欢迎新用户🎉