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

2.0 KiB
Raw Permalink Blame History

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_attrsrdp_enabledrdp_portrdp_username(无 RDP 密码字段;连接密码在本机 mstsc 输入)。
  2. APIGET /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 addressusername
  • 未启用或不存在服务器返回 404/400。
  • POST /auth/rdp-token、无 /ws/rdp、无连接审计表项。

非目标

  • 浏览器内 RDP、macOS/Linux 客户端集成、RDPWrap、连接录像/会话审计。