最近把主力开发机彻底切到了 Linux 平台,结果手头一个项目还挂着一台 Windows 工作站,跨平台远程连接成了绕不开的刚需。试了一圈工具之后,留在我脚本里的客户端,就是命令行工具 xfreerdp3。如果你也面临同样的情况——用 Linux 桌面或服务器去远程连接 Windows 机器,无论是日常运维、临时改配置,还是处理某个 Windows 虚拟机,这篇文章可以从安装、基本连接到高频报错排查,一次性把常用打法讲清楚。
1. 为什么我在 Linux 下只留下 xfreerdp3
1.1 试过的客户端和它们的脾气
很多第一次接触这个场景的人都会问:图形化远程桌面客户端一大堆,为什么偏要用一个命令行工具?
我先说试过的几个。Remmina 我是用过的,它自带一套 GUI,支持 RDP、VNC、SSH 等协议,看起来很全能,但问题恰恰出在“太全能”。当连接出现异常时,Remmina 的参数封装太厚,你很难看到底层 RDP 握手到底卡在哪一步。而 RDP 这类协议一旦握手失败,最值钱的信息就是失败原因,GUI 工具经常只给你一个模棱两可的“连接失败”。
GNOME 桌面自带的 Connections(旧称 gnome-connections)界面确实简洁,但能调的参数少得可怜,分辨率策略、重定向选项、证书校验收敛得都比较狠。KRDC 在 KDE 下面体验尚可,可一旦涉及复杂的 RD Gateway 或磁盘映射,配置难度直接上升。
rdesktop 是老古董了,多年前确实是一把好手,但现在远端 Windows 系统动辄开启 NLA、强制证书校验,rdesktop 的现代协议支持已经明显跟不上。除非你连的是一台 Windows 7 之前的虚拟机,否则不建议再花时间调它。
1.2 FreeRDP 3.x 比 2.x 究竟强在哪
xfreerdp 是 FreeRDP 项目的命令行客户端,它的优势非常直接:参数完全透明,连接握手过程可以用日志级别打开,出了问题能精确知道是哪一步失败;所有配置都能落到脚本里,一台机器连接方式定下来之后,下次一行命令搞定;还能跟 SSH 隧道、自动化调度工具配合,这是 GUI 工具很难做到的。
不过单说 xfreerdp 还不够,你最好用 3.x 版本而不是 2.x。FreeRDP 3.0 相比 2.x,在几个关键位置变化很大:
- 参数体系重构,很多布尔选项统一成了
+和-前缀的风格,命令可读性更好。 - 图形管线支持 AVC444 模式,也就是基于 H.264 的 RDP 图形加速,弱网条件下的画面流畅度提升非常明显。
- Wayland 环境下适配更好,现在很多 Linux 桌面默认会话就是 Wayland,2.x 在某些合成器下会出现光标残影或画面撕裂,3.x 基本解决了这个问题。
- 对远程桌面网关(RD Gateway)和现代 Windows 认证协议的兼容性更好。
我在 Ubuntu 24.04 和 Debian 12 上都用过这两个版本,对比下来,3.x 的稳定性确实更值得放在生产环境。
| 客户端 | 可配置性 | 日志可读性 | 脚本化 | 适合场景 |
|---|---|---|---|---|
| Remmina | 中 | 弱 | 弱 | 偶尔点几下连上的轻量使用 |
| gnome-connections | 低 | 弱 | 弱 | 纯桌面 GUI 快速连接 |
| rdesktop | 低 | 中 | 中 | 老古董系统兼容测试 |
| xfreerdp2 | 高 | 强 | 强 | 2.x 无法升级的旧系统 |
| xfreerdp3 | 高 | 强 | 强 | 日常主力、自动化、复杂网关环境 |
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 两端准备:Windows 开启远程桌面,Linux 装上客户端
2.1 Windows 端最小化配置
要让 Linux 能连上 Windows,首先得保证 Windows 端“愿意被连接”。这跟用什么客户端无关,是服务端配置。
在 Windows 上打开“设置 -> 系统 -> 远程桌面”,打开“启用远程桌面”开关。这里要特别注意,只有 Windows 专业版、企业版、教育版和 Windows Server 系列自带远程桌面服务端,Windows 家庭版是没有这个功能的,具体后面单独说。
被连接的用户必须属于“远程桌面用户”组。默认情况下,管理员组成员可以直接连,普通用户会被拒绝。如果你是用一个普通账号登录然后发现总是报“拒绝访问”,先检查这一条。
防火墙方面,Windows 自带防火墙在启用远程桌面时会自动放行 3389 端口。如果你装了第三方安全软件,或者系统被某些安全组策略接管了,就要确认 TCP 3389 是否真正可达。在 Linux 端可以用 nc -vz 192.168.1.100 3389 或者 telnet 192.168.1.100 3389 先探测一下端口通不通,不要一上来就调 xfreerdp3 参数,端口不通是另一个世界的问题。
还有一个很容易被忽略的点:如果这台 Windows 机器没有接显示器,或者物理显示器长期处于关闭状态,部分显卡驱动会让系统输出一个极低的分辨率,RDP 连上去之后画面就特别难受。这个问题到第 5 章的报错排查里详细展开。
2.2 Linux 端安装 xfreerdp3 的三种方式
Linux 下安装 xfreerdp3,最省事的是直接用发行版软件仓库。不同发行版的包名和命令名有差异,这个必须看清楚:
- Ubuntu 22.04/24.04、Debian 12:搜索一下软件包,Ubuntu 24.04 可以直接
sudo apt install freerdp3,装完命令是xfreerdp3。 - Debian 12 默认仓库里的是 FreeRDP 2.x,包名是
freerdp2-x11,装完命令是xfreerdp。这种情况下如果你确实想要 3.x,要么用 Debian
