## 发布说明 本次发布将 CloudSSH 升级至 `v1.9.0`,新增默认关闭、可选启用的一次性 SSH 授权分享与分享会话专用审计。 ## 主要变更 - 使用仅含 256 位随机能力凭证的分享链接,持久层只保存哈希,链接只能领取一次。 - 支持独立的领取有效期、最长会话时间、所有者实时撤销和连接到期关闭。 - 接收者明确同意审计后进入受限会话,仅可使用终端与 SFTP。 - 分享会话禁用 AI Agent、自动重连、OS 检测、元数据更新、主机指纹替换及全链路 `keyboard-interactive`。 - 新增 `SSHShareDO`,记录会话生命周期、SFTP 请求/结果和终端 PTY 输出;审计失败或达到容量上限时关闭会话。 - 增加 `ENABLE_SSH_SHARING` 部署配置、中英文说明和完整安全回归。 ## 安全边界 - 原始分享凭证不会进入 SSH Durable Object 或持久层,领取后仅签发 60 秒有效的连接票据。 - 分享链要求目标及全部跳板节点已有可信路径级主机指纹,并始终启用严格主机密钥签名验证。 - PTY 输出审计不是目标机级强审计,文档已明确其覆盖范围和限制。 ## 验证 - Worker 与前端类型检查:通过 - 单元与集成测试:584 项通过 - Chromium/WebKit 浏览器回归:通过(1 项按测试条件跳过) - 前端生产构建:通过 - Wrangler 干运行:通过,正确识别 3 个 Durable Object 绑定 - `git diff --check`:通过 Refs #84 Issue #84 保持开启,用于继续收集分享功能的实际使用反馈和后续需求。
14 lines
634 B
TypeScript
14 lines
634 B
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { parseShareToken } from '../frontend/src/share-session';
|
|
|
|
describe('一次性 SSH 分享链接', () => {
|
|
it('只接受不携带服务器信息的固定路由和高强度 URL-safe 凭证', () => {
|
|
const token = 'Abc_123-'.repeat(6);
|
|
expect(parseShareToken(`#/share/${token}`)).toBe(token);
|
|
expect(parseShareToken(`#share/${token}`)).toBeNull();
|
|
expect(parseShareToken(`#/share/short`)).toBeNull();
|
|
expect(parseShareToken(`#/share/${token}?host=secret.example.com`)).toBeNull();
|
|
expect(parseShareToken(`#/share/${'a'.repeat(129)}`)).toBeNull();
|
|
});
|
|
});
|