这个坑,Wayland 挖了十几年。RustDesk 昨天发了一个预览版,把这个坑填上了 - 用的是 Rust。

X11 时代,远程桌面这事简单直接。x11vnc 起个服务,屏幕画面哗啦啦就传出来了,哪管你登录没登录。安全问题?有,但能用。
Wayland 来了之后,一切推倒重来。它把「屏幕内容」当成高度敏感资源,塞进 PipeWire + XDG Portal 的权限模型里。翻译成人话:任何应用想截屏、想远程控制,都得弹个窗让真实用户点头。这个设计的初衷是好的 - 防止恶意软件偷窥你的屏幕。但代价是,「无人在场的远程访问」这个运维刚需被一并枪毙。
TeamViewer 到现在还把 Wayland 支持标为「实验性」,AnyDesk 干脆要求 Linux 接入端必须跑 Xorg。商业公司搞了这么多年都没搞定的事,你大概能体会这坑有多深。
有位 ID 叫 magicalhippo 的老哥一句话捅破窗户纸:"Wayland creators threw out the baby with the bath water." 把孩子和洗澡水一起倒了。讽刺拉满。
RustDesk 这次的预览版叫 rustdesk-unattended-wayland-1.4.9,只支持 x86_64 的 Debian/Ubuntu 系,但做的事一点不「预览」:
它是怎么绕开 XDG Portal 的?简单说是下沉到了 DRM(Direct Rendering Manager) 层。既然应用层非要用户授权,那就绕过应用层,直接从内核显示子系统拿帧缓冲。这个思路在 X11 时代不稀奇,在 Wayland 时代能做出来,得啃下 compositor 各种私有扩展,还得处理多 GPU、多 DPI 的边角情况。
也有人泼冷水。superkuh 指出这套方案依赖一个叫 libdrmtap 的库(他特地标注是“LLM AI coded”),「其他难点仍然靠各个 Wayland compositor 私有的、非标准的扩展堆出来,不通用」。这话没错,但也恰恰说明这件事有多脏多累 - GNOME 的 Mutter、KDE 的 KWin、wlroots 系,每一家的远程控制接口都是方言,得一家一家适配。这种活,商业公司不愿意干,志愿者干不动,正好是 RustDesk 这种「产品化的开源项目」该啃的骨头。
讨论里吵得最凶的,反而不是 Wayland 本身,是一个看似不相关的问题:RustDesk 的局域网直连默认不加密。
guiambros 把这事捅出来,附了 GitHub issue #3714 的链接。trueno 搬出官方回复原话:“we do not recommend using RustDesk with a public IP alone... the VPN tunnel already provides end-to-end encryption, so additional encryption within RustDesk is unnecessary.” - 我们不建议裸奔公网,你要走 VPN,VPN 已经有端到端加密了,RustDesk 再加一层就多余了。
这话听着没毛病,但 LoganDark 炸了:“don't act like it's a bad thing except for when somebody else does it for you, that's just dishonest.” - 别嘴上说「这功能没必要」,等别人提 PR 了你又收,这不诚实。
有意思的是,kaoD 紧跟着补了一刀,说这事技术上根本不难:“Nothing prevents RustDesk from implementing TLS TOFU... which offers the same security guarantees as SSH TOFU.” - 像 SSH 那样搞个「首次使用信任」就行,哪需要什么 PKI 体系。
你品品这个争议。一边是企业用户的真实顾虑,一边是开源项目的资源现实,中间还夹着一个「官方话术是否体面」的元问题。embedding-shape 站出来说,官方明说自己不做、但承诺合并后会维护,「这已经是开源项目的理想回应方式了,还能怎样?」
这一架没吵出结果,但把一个真相吵出来了:远程桌面这条赛道,安全和便利从来不是技术问题,是优先级问题。
把镜头拉远。RustDesk 是 Rust 写的,这件事本身值得单独说一句。
远程桌面这种软件,要对屏幕帧缓冲做零拷贝,要处理网络抖动的 FEC,要跟各家显示服务器搏斗,还要管音频、剪贴板、文件传输 - 全是系统级的脏活。C/C++ 能干,但内存安全的地雷一路踩过来,你看 AnyDesk 和 TeamViewer 的 CVE 列表就知道。RustDesk 用 Rust 重写整套链路,这次连最棘手的 Wayland 无人值守都啃下来了,给「Rust 能写严肃系统软件」这个论点又添了一个铁证。
往前数,Rust 已经在 Linux 内核、Windows 内核、Android 系统组件、Cloudflare 的边缘代理、Discord 的实时消息层都站稳了脚跟。RustDesk 这一仗的意义不在 Wayland,在于证明 Rust 能Hold 住「面向终端用户的、桌面级的、状态复杂的」系统软件 - 这是过去被认为 C++ 和 Qt 专属的地盘。
社区里也有人开始畅想:cryo32 说「我还在用 X11,挺开心的」,底下一排人劝他别得意太久;diego_moita 实测之后说 TightVNC 在资源受限的 VM 里更流畅,但马上有人回怼「那是你没试过 RustDesk 的硬件编码」。j_aime 的评论最简单:"I've been using rustdesk for years. I love it." 没有花哨的理由,就是好用。
Wayland 的安全模型把「不让用户知情」和「不让软件运行」划上了等号,RustDesk 用 Rust 把这个等号凿开了一条缝。这条缝不大,只够运维在凌晨三点远程重启完服务器之后,不用再打车去机房。
但系统软件的进步,往往就是这样一条缝一条缝凿出来的。等哪天 Linux 桌面真的能进企业采购清单,回头看,这条缝会是个标记。