2.0 KiB
2.0 KiB
RDP 原生启动 — 设计说明
背景与目标
运维需在 Nexus 服务器列表对 Windows 子机发起远程桌面。用户明确 不 复用 WebSSH 的 JWT 短票、WebSocket 隧道与连接级审计。
目标:在服务器上配置 RDP 参数,一键下载 .rdp 文件,由操作员本机「远程桌面连接」(mstsc) 直连目标,Nexus 不做协议代理。
方案对比
| 方案 | 优点 | 缺点 | 结论 |
|---|---|---|---|
| guacd + Guacamole + WS | 浏览器内 RDP | 需侧车、复杂、等同 WebSSH 栈 | 否 |
| JWT 短票 + Nexus WS 隧道 | 与 SSH 统一 | 用户不需要 | 否 |
下载 .rdp / 本机 mstsc |
极简、无代理、合规 | 仅 Windows 桌面体验最佳;密码需本机输入 | 采用 |
选定方案
- 存储:
servers.extra_attrs内rdp_enabled、rdp_port、rdp_username(无 RDP 密码字段;连接密码在本机 mstsc 输入)。 - API:
GET /api/servers/{id}/rdp-file— 常规管理员 JWT,返回application/x-rdp文件流;无短票、无 WebSocket、无rdp_connect审计。 - 前端:服务器表单「远程桌面」折叠项;列表操作「RDP」在
rdp_enabled时显示;点击下载.rdp。 - 凭据:
.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、连接录像/会话审计。