GreenhandTan
ff7b65dcd1
feat: 核心功能升级与安全加固
...
- 🛡️ 安全(Security):
- 彻底修复 IPv6 及保留地址的 SSRF 绕过漏洞。
- 新增基于 IP 的连接频率限制 (10次/分钟) 防范暴力破解。
- 在 localStorage 中通过 Web Crypto (AES-GCM) 对记住的凭证进行加密存储。
- 连接时静默计算并输出服务器 Host Key 指纹 (SHA-256),兼顾安全与易用性。
- ✨ 功能(Feature):
- 支持基于 Ed25519 的 SSH 纯文本私钥直接登录。
- 前端终端集成 zmodem.js,支持在终端中运行 rz/sz 实现浏览器与服务器文件的直接拖拽与无缝传输。
- 支持 WebSocket 会话漫游 (Roaming),网络短暂断开可借助 Durable Object 在 15 秒内静默重连恢复会话,免去重新输入密码的繁琐。
- 🎨 体验与界面(UX/UI):
- 前端渲染引擎升级为 WebGL (@xterm/addon-webgl),大幅提升海量文本滚动的帧率与流畅度。
- 新增内置极客主题下拉框 (Cyberpunk / Glacier / Gruvbox) 及右键复制粘贴支持。
2026-06-15 08:22:59 +08:00
GreenhandTan
4b04c07f0f
feat: 完善核心功能并完成开源准备
...
- 修复 AES-GCM 数据包 Padding 计算错误
- 修复 SSH Keepalive 心跳包导致自动断开的问题,引入 Global Request 处理
- 将 WebSocket 实现迁移至 Durable Object Hibernation API,支持超长会话
- 前端添加动态版权年份,并精简控制台 Debug 输出
- 添加中英文双语 README 帮助文档
- 清理测试产生的日志与临时文件
2026-06-14 11:02:15 +08:00
GreenhandTan
6fdd83e631
fix: 解决主机密钥算法不兼容导致密钥协商卡死的问题并健全TCP连接断开处理
2026-06-14 09:29:28 +08:00
GreenhandTan
5ed25efe6f
fix: 修复SSH自定义协议连接缺陷并优化前端集成构建流程
2026-06-14 09:12:46 +08:00
TanXin
58432afd04
fix: 修复SSH协议实现和改善错误处理
...
- 修复nonce构造方法,使用字节操作替代DataView
- 修复密钥派生函数,正确编码H参数为SSH字符串
- 改善版本交换处理,正确解析CRLF分割的版本信息
- 添加SSH_MSG_CHANNEL_OPEN_FAILURE消息类型支持
- 清理冗余调试日志,保留关键调试信息
- 改善错误处理和状态管理
- 添加通道打开失败和PTY请求失败处理
2026-06-13 21:17:41 +08:00
TanXin
806fd2c9ec
fix: encode session_id as SSH string in key derivation + add AES-GCM AAD
...
Key derivation: session_id must be encoded as SSH string (4-byte length
prefix + value) per OpenSSH implementation, matching how shared_secret
is already encoded as mpint.
AES-GCM: pass packet_length as additionalData (AAD) per RFC 5647.
2026-06-13 00:45:04 +08:00
TanXin
b4da52e645
fix: add AES-GCM AAD (packet_length) for SSH RFC 5647 compliance
...
AES-GCM requires the 4-byte packet_length field as Additional
Authenticated Data (AAD). Without this, the server's MAC verification
fails and it closes the connection.
2026-06-13 00:06:42 +08:00
TanXin
5e5375430f
debug: add detailed key exchange and encryption logging
2026-06-12 23:42:10 +08:00
TanXin
344e4534c2
fix: 修复 AES-GCM nonce 构造和解密认证标签问题,添加调试日志
...
- 修复 buildNonce: 使用 XOR 替代直接替换 (OpenSSH 规范要求)
- 修复 nextPacket: 传入完整 ciphertext+tag 给 AES-GCM 解密
- 保留 NEWKEYS 后序列号重置为 0
- 添加加密/解密调试日志和前端状态消息
2026-06-12 23:33:36 +08:00
IT
d355e2c10c
fix: NEWKEYS 后重置序列号为 0(加密上下文切换)
2026-06-12 19:01:43 +08:00
IT
8c5f0fa6ed
fix: AES-GCM 模式下 packet_length 不加密 (RFC 5647)
...
- Builder: 加密时只加密 length 之后的数据,保留明文 length 字段
- Parser: 解密时跳过 length 字段,只解密后续数据
- 通过 hasAuthTag 参数区分 AES-GCM 和普通模式
2026-06-12 18:44:17 +08:00
IT
448547ed5b
fix: 修复 encrypt/decrypt 异步调用未 await 导致 Promise 写入 socket 的问题
...
- SSHPacketBuilder.build 改为 async,await encrypt 函数
- SSHPacketParser.nextPacket 改为 async,await decrypt 函数
- 所有调用点加上 await
2026-06-12 18:31:43 +08:00
IT
e49f7fe4ef
fix: 修复 SSH 协议实现的多个关键 bug
...
- ECDH_INIT 发送原始 EC 点而非 SSH 公钥 blob
- Exchange hash 计算使用 encodeString 包装所有字段
- NEWKEYS 以明文发送后再启用加密
- AES-GCM 模式下 MAC 算法改为 none
- 修复 WebSocket 发送 Uint8Array 时 buffer 偏移问题
2026-06-12 18:22:02 +08:00
IT
2c44d4fedd
debug: 添加更详细的 KEX 调试日志
2026-06-12 17:33:32 +08:00
IT
c3fb472b2b
fix: KEX 阶段不需要 GCM auth tag
2026-06-12 17:19:02 +08:00
IT
b95635bdd5
feat: 纯 Cloudflare 架构 Web SSH 工具
...
- Cloudflare Workers + Durable Objects
- 自实现 SSH 协议引擎(ECDH-P256 + AES-256-GCM)
- 前端:Vite + TypeScript + xterm.js
- 支持密码认证、终端渲染、窗口自适应
2026-06-12 15:09:29 +08:00