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 集成部署:
- Fork 仓库 → Cloudflare Dashboard → Workers & Pages → Connect to Git
- 构建命令填
pnpm run build:frontend,保存部署即可 - 获得
*.workers.dev域名,可绑自定义域名
不配置登录方式时,可以保留匿名直连;保存服务器、跳板、分享和 AI 配置等功能需要登录。
完整配置说明请查看项目 README。
相关链接
视频展示部分功能,最新界面和能力以当前版本及更新日志为准。
觉得有用的话,欢迎去 GitHub 点个 Star,也欢迎反馈问题、提交改进。
看上去不错
@sinstar #2 代码全部开源,可部署在自己的cloudflare账户,所有数据都保存在你的cloudflare,项目有天然用户隔离,保存的服务器隐私信息只在worker中流转,以下情况会被入侵:1.攻破Cloudflare 平台;2.你的 Cloudflare 账号被盗;3.你电脑的本身的输入环境就不可信,与项目无关系。总结一下:这个项目与你的服务器安全没直接关系,当且仅当你将你的服务器凭证等信息保存在这个项目(即保存到你自己cloudflare的DO中)存在风险。
这个好东西
好项目star了
字太多了,我如何信任这个软件?而不是让它成为一个额外的攻击面?
太复杂 还是ttyd最香喷喷了
能否支持 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具备更多的优势,不过就是收费,这个可以自己部署一个留着备用,反正也不需要自己维护,我仓库配置有自动同步的工作流,配置好了,可以同步我发布的版本自动更新