当前位置:首页>Linux>Rust 又给 Linux 填了一个坑:Wayland 无人值守远程访问终于通了

Rust 又给 Linux 填了一个坑:Wayland 无人值守远程访问终于通了

  • 2026-09-09 14:38:57
Rust 又给 Linux 填了一个坑:Wayland 无人值守远程访问终于通了
运维过 Linux 桌面的人,大概都经历过这种时刻:远程重启了一台机器,然后就再也连不回去了。不是网断了,不是机器没起来,是 Wayland 在登录界面死死卡住,非要一个活人坐在屏幕前点一下「允许」。

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

先说痛:Wayland 的「为你好」有多反人类

Wayland 无人值守对比图

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 这次的预览版叫 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 站出来说,官方明说自己不做、但承诺合并后会维护,「这已经是开源项目的理想回应方式了,还能怎样?」

这一架没吵出结果,但把一个真相吵出来了:远程桌面这条赛道,安全和便利从来不是技术问题,是优先级问题。

更大的图景:Rust 在系统软件的攻城略地

把镜头拉远。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 桌面真的能进企业采购清单,回头看,这条缝会是个标记。


最新文章

随机文章