Files
Nexus/docs/design/specs/2026-06-09-rdp-native-launch-design.md
2026-07-08 22:31:31 +08:00

40 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RDP 原生启动 — 设计说明
## 背景与目标
运维需在 Nexus 服务器列表对 Windows 子机发起远程桌面。用户明确 **不** 复用 WebSSH 的 JWT 短票、WebSocket 隧道与连接级审计。
目标:在服务器上配置 RDP 参数,一键下载 `.rdp` 文件,由操作员本机「远程桌面连接」(mstsc) 直连目标,Nexus 不做协议代理。
## 方案对比
| 方案 | 优点 | 缺点 | 结论 |
|------|------|------|------|
| guacd + Guacamole + WS | 浏览器内 RDP | 需侧车、复杂、等同 WebSSH 栈 | 否 |
| JWT 短票 + Nexus WS 隧道 | 与 SSH 统一 | 用户不需要 | 否 |
| 下载 `.rdp` / 本机 mstsc | 极简、无代理、合规 | 仅 Windows 桌面体验最佳;密码需本机输入 | **采用** |
## 选定方案
1. **存储**`servers.extra_attrs``rdp_enabled``rdp_port``rdp_username`(无 RDP 密码字段;连接密码在本机 mstsc 输入)。
2. **API**`GET /api/servers/{id}/rdp-file` — 常规管理员 JWT,返回 `application/x-rdp` 文件流;**无**短票、**无** WebSocket、**无** `rdp_connect` 审计。
3. **前端**:服务器表单「远程桌面」折叠项;列表操作「RDP」在 `rdp_enabled` 时显示;点击下载 `.rdp`
4. **凭据**`.rdp` 仅含地址与用户名;`prompt for credentials:i:1`,密码在 mstsc 弹窗输入(Windows DPAPI 加密密码无法在 Linux 服务端生成)。
## 安全与性能
- 下载接口与服务器 CRUD 相同鉴权(`get_current_admin`)。
- 不存储、不传输 RDP 密码。
- 不经过 Nexus 网络路径,无额外带宽与 guacd 资源。
## 验收标准
- [ ] 编辑服务器可启用 RDP、设端口/用户名。
- [ ] 启用后列表出现「RDP」,下载 `.rdp` 含正确 `full address``username`
- [ ] 未启用或不存在服务器返回 404/400。
- [ ]`POST /auth/rdp-token`、无 `/ws/rdp`、无连接审计表项。
## 非目标
- 浏览器内 RDP、macOS/Linux 客户端集成、RDPWrap、连接录像/会话审计。