960598f504
guacamole-common-js 不会向 guacd 发送 select/connect;改为 Nexus 用 rdp_hosts 凭据完成握手后再桥接 WebSocket,消除 protocol violation。 Co-authored-by: Cursor <cursoragent@cursor.com>
51 lines
1.3 KiB
Markdown
51 lines
1.3 KiB
Markdown
# 2026-06-10 RDP guacd 握手修复 — 生产验证
|
||
|
||
## 变更
|
||
|
||
- 服务端完成 guacd `select` → `connect` → `ready` 握手,再桥接 WebSocket
|
||
- 凭据来自 `rdp_hosts` 表,不依赖 URL 中的 password
|
||
|
||
## 部署
|
||
|
||
- 主机 `/opt/nexus` 已同步新文件
|
||
- `nexus-1panel.sh upgrade --no-backup` 重建镜像 `nexus-prod-nexus`
|
||
- `/health` → ok
|
||
|
||
## 验证(Agent 执行)
|
||
|
||
### 1. guacd 直连握手(容器内 Python)
|
||
|
||
```
|
||
handshake 20.189.75.225 3389 azureuserwindwos guacd guacd 4822
|
||
READY $da3288e0-2943-4186-b542-b00156251633
|
||
```
|
||
|
||
guacd 日志:
|
||
|
||
```
|
||
Creating new client for protocol "rdp"
|
||
Connected to RDPDR 1.13 as client 0x0003
|
||
```
|
||
|
||
### 2. WebSocket 隧道
|
||
|
||
```
|
||
FIRST_MSG 0.,37.$f5b63cbd-2af9-4ee4-a714-37a7fbf1df9c;
|
||
```
|
||
|
||
首包为 Guacamole tunnel OPEN(空 opcode + connection id),符合 `guacamole-common-js` 预期。
|
||
|
||
### 3. 结论
|
||
|
||
- 原 `Guacamole protocol violation`(透明 TCP 桥接)已消除
|
||
- RDP 目标 20.189.75.225:3389 可从 guacd 建立会话
|
||
|
||
## 待用户终验
|
||
|
||
浏览器:`https://api.synaglobal.vip/app/#/rdp` → 选择 `azurewin11` → 连接,应出现远程桌面画布。
|
||
|
||
## 备注
|
||
|
||
- 代码尚未 `git push`(仅主机热更新 + 镜像重建);建议后续提交 `protocol.py` / `ws_tunnel.py` / `rdp.py`
|
||
- RDP 用户名库中为 `azureuserwindwos`(若 Windows 实际用户不同需在前端编辑)
|