40 lines
2.0 KiB
Markdown
40 lines
2.0 KiB
Markdown
# 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、连接录像/会话审计。
|