RDP Monster

Linux 远程桌面连 Windows:Remmina、xfreerdp 与排错

Linux 远程桌面连 Windows:Remmina、xfreerdp 与排错

该选择哪个 Linux 远程桌面客户端?

微软没有为 Linux 提供 RDP 客户端:Windows App 覆盖 Windows、macOS、iOS、Android 和浏览器,但不包括 Linux 桌面。Linux 拥有的是 FreeRDP,一个开源的协议实现,以及基于它构建的若干前端:Remmina(GTK,可保存配置文件)、GNOME Connections 和 KDE 的 KRDC(选项较少),还有 xfreerdp,FreeRDP 自带的命令行客户端,所有选项都可直接使用。

客户端界面NLA(CredSSP)现代编解码器重定向状态
RemminaGTK 图形界面,可保存配置文件支持(通过 FreeRDP)在编译时包含这些特性的 FreeRDP 上支持 RemoteFX、GFX、H.264剪贴板、文件夹、打印机、音频、麦克风积极维护中
xfreerdp(FreeRDP 3)命令行支持RemoteFX、GFX、H.264FreeRDP 支持的全部功能积极维护中
GNOME Connections / KRDC与桌面集成的图形界面支持(通过 FreeRDP)取决于 FreeRDP 的编译版本基础功能(剪贴板、缩放)随桌面环境一起维护
rdesktop命令行仅支持 Kerberos,不支持 NTLM不支持,仅有旧式位图编解码器剪贴板、磁盘、声音最后一个版本 1.9.0,2019 年 10 月

日常连接的机器可以用 Remmina,但仍然值得学会 xfreerdp:Remmina 出问题时报的就是 FreeRDP 的错误,而命令行是最快的诊断途径。rdesktop 留给无法使用网络级身份验证的主机,例如未打补丁的 Windows XP 或 Server 2003。

先准备好 Windows 一侧

在动手配置 Remmina 或 xfreerdp 之前,先在这台 Windows 11 机器上启用远程桌面,同时顺便确认三件事:

  • 版本:只有 Windows Pro、Enterprise 和 Server 版能接受传入的 RDP 会话;Home 版无论用什么客户端都无法作为主机。
  • 账户:该用户需要一个真正的密码(Windows Hello PIN 在 RDP 上无效),并且必须是管理员或属于 Remote Desktop Users 组。
  • 地址:用 ipconfig 记下 IP:局域网内是私有地址,Windows VPS 用公网 IP,而通过互联网访问家里的电脑则需要接入网络的 VPN。

在 Linux 上,先确认对端确实有服务在监听,再去怀疑客户端:

nc -vz 203.0.113.10 3389

返回 succeeded 说明端口可达;被拒绝或长时间无响应的情况在错误排查一节说明。

Remmina:图形界面方案

1. 安装 Remmina 及其 RDP 插件

在大多数发行版上,RDP 支持是一个独立插件;secret 插件负责把密码保存到桌面密钥环中:

# Debian / Ubuntu
sudo apt install remmina remmina-plugin-rdp remmina-plugin-secret

# Fedora
sudo dnf install remmina remmina-plugins-rdp remmina-plugins-secret

# Arch Linux
sudo pacman -S remmina freerdp

# Any distribution (Flatpak)
flatpak install flathub org.remmina.Remmina

2. 创建连接配置文件

点击 + 新建配置文件,把 Protocol 设为 RDP - Remote Desktop Protocol。在 Server 中填入 IP 或主机名,非标准端口用冒号追加,例如 203.0.113.10:3390。填写 Username 和 Password;本地 Windows 账户的 Domain 留空。保存后双击即可连接;下面的证书章节会解释你首先会看到的那个提示。

3. 分辨率、缩放与画质

在 Basic 选项卡中,Resolution 提供 Use initial window size、Use client resolution(适合全屏)以及固定尺寸;随后工具栏上的动态分辨率开关可以让 Windows 在你调整窗口大小时重新排布桌面。Colour depth 默认为 Automatic (32 bpp);在较新的 Windows 上 GFX AVC444 (32 bpp) 最清晰,而 High colour (16 bpp) 搭配 Quality 设为 Poor (fastest) 更适合慢速链路。在 HiDPI 屏幕上,Advanced 选项卡中的 Remote scale factor 会让 Windows 自己把界面渲染得更大,而不是在本地拉伸像素。

4. 剪贴板、文件夹与音频重定向

剪贴板同步默认开启(Advanced 选项卡里有 Turn off clipboard sync 开关)。Basic 选项卡中的 Share folder 会把一个本地目录重定向到会话中,它会出现在 Windows 资源管理器的 This PC 下。把 Sound 设为 Local 可以通过 Linux 扬声器听到 Windows 的声音,启用 Redirect local microphone 则是反方向传输。

xfreerdp(FreeRDP 3):命令行方案

1. 安装 FreeRDP 3

# Debian 12+ / Ubuntu 24.04+ (binary: xfreerdp3)
sudo apt install freerdp3-x11

# Fedora (binary: xfreerdp, version 3.x)
sudo dnf install freerdp

# Arch Linux (binary: xfreerdp)
sudo pacman -S freerdp

Debian 和 Ubuntu 把 FreeRDP 3 的可执行文件命名为 xfreerdp3,以便与 freerdp2-x11(即普通的 xfreerdp)共存。用 xfreerdp3 /version 确认,并据此替换下文命令。在 Wayland 上,xfreerdp 通过 XWayland 运行;freerdp3-sdl 提供 FreeRDP 更新的原生 SDL 客户端。

2. 建立连接

xfreerdp3 /v:203.0.113.10 /u:Administrator /from-stdin +dynamic-resolution +clipboard

/from-stdin 会提示输入密码,避免像 /p: 那样把密码留在 shell 历史里。域账户写成 /u:CORP\alice 或 /u:[email protected];非默认端口写在服务器参数上,即 /v:203.0.113.10:3390。其他实用参数:

  • /f 全屏(Ctrl+Alt+Enter 切换),或者 /size:1920x1080 以及百分比写法如 /size:80%。
  • /multimon 横跨所有显示器,或用 /monitors:0,1 指定部分显示器。
  • /kbd:layout:0x40c 强制键盘布局(法语);/list:kbd 会列出这些代码。

3. 重定向剪贴板、文件夹、音频和打印机

xfreerdp3 /v:203.0.113.10 /u:Administrator /from-stdin \
  +clipboard \
  /drive:share,$HOME/rdp-share \
  /sound /microphone \
  /printer

/drive:name,path 把本地目录暴露给会话;它会以 share on <your-hostname> 的形式出现在 Windows 资源管理器的 This PC 下。+home-drive 共享你的整个家目录,+drives 则共享所有已挂载的文件系统,通常范围超出实际需要。/sound 通过你默认的音频子系统(PulseAudio,或 PipeWire 的兼容层)播放 Windows 音频;/audio-mode:1 则让音频留在服务器端。

4. 分辨率与 HiDPI 缩放

+dynamic-resolution 会让 Windows 在你调整窗口大小时改变自己的桌面尺寸,文字因此保持锐利。/smart-sizing 保持远程桌面尺寸不变,在 Linux 一侧缩放画面,除 100% 之外都会发虚。在 4K 屏幕上使用 /scale:180(可接受的取值:100、140、180),让 Windows 以 180% 渲染界面,或者用 /scale-desktop:200 做更精细的控制。带宽方面,/gfx:AVC444 会在支持的主机上启用 H.264 管线,而 -wallpaper -themes /bpp:16 是低带宽组合。

证书警告详解

首次连接某台主机时,xfreerdp 会打印证书的主题、颁发者和 SHA-256 指纹,然后提示:The above X.509 certificate could not be verified, possibly because you do not have the CA certificate in your certificate store, or the certificate has expired. Do you trust the above certificate? (Y/T/N)。Y 永久保存该指纹,T 仅本次会话信任,N 中止(Remmina 会在 Accept certificate? 对话框中问同样的问题)。这个警告是预期行为:Windows 为远程桌面服务生成一张自签名证书,颁发给机器自己的名称,没有任何证书颁发机构为它作担保。会话依然是加密的,客户端只是无法证明对端是谁。要核实,可在 Windows 机器上用 certlm.msc 打开 Remote Desktop 下的 Certificates 进行比对。已接受的指纹按主机分别保存在 ~/.config/freerdp/server/ 下(FreeRDP 2 使用 ~/.config/freerdp/known_hosts2)。

真正需要警惕的是 !!!Certificate for host:port has changed!!!。它在保存的指纹不再匹配时出现:重装 Windows、更改主机名或更新证书后属于正常情况,但中间人攻击看起来也正是如此。先在 Windows 一侧确认变更,然后从 FreeRDP 的存储中删除该主机的条目并重新连接。做自动化时,/cert:tofu 会在首次使用时接受并随后固定;/cert:fingerprint:sha256:<hex> 显式固定一张已知证书。/cert:ignore 和 Remmina 的 Ignore certificate 会完全关闭检查,仅限实验环境使用。

常见错误:连接被拒绝、超时、NLA 与 CredSSP

连接被拒绝:xfreerdp 报告 ERRCONNECT_CONNECT_FAILED [0x00020006]。主机有响应,但该端口上没有任何服务接受连接:远程桌面被禁用、服务已停止,或者端口写错了。在 Windows 上,Get-Service TermService 应显示 Running,netstat -ano | findstr :3389 应出现一行 LISTENING。如果连接是卡住而不是被拒绝,说明数据包被防火墙、NAT 规则或 VPN 路由丢弃了;这篇修复远程桌面连接超时的指南会逐层排查这一部分。

NLA 与 CredSSP 失败。现代 Windows 要求网络级身份验证:在绘制任何桌面之前,凭据先通过 CredSSP 校验。常见症状是 ERRCONNECT_LOGON_FAILURE [0x00020014],多数情况下这是 Windows 故意不解释的凭据问题:拼写错误、给本地账户加了域前缀、域账户漏了前缀,或者密码为空(NLA 会拒绝空密码)。一个不太明显的原因是密码已过期或必须修改,而 CredSSP 无法处理,因为修改密码的对话框位于你还没抵达的图形界面里。强制使用 /sec:tls 可以跳过 NLA 直达 Windows 登录界面,前提是主机策略允许。用 rdesktop 时同样的情况显示为 CredSSP required by server;请换用 FreeRDP,因为 rdesktop 只在 Kerberos 下支持 CredSSP。

安全:先上 VPN 或隧道;换端口不算安全措施

3389 端口从哪里可达,比任何客户端选项都重要。一个对互联网开放的 RDP 端口几小时内就会收到密码爆破流量,此时唯一的防线只有 NLA 和一个强密码。把服务改到其他端口只改变时间成本:扫描器会枚举全部 65535 个端口,而 RDP 握手无论端口号如何都会暴露自己。这篇 RDP 3389 端口指南说明了在该端口上监听的是什么以及原因。

真正能降低暴露面的做法:使用 WireGuard 或其他 VPN,让 3389 只能从私有地址访问;在 VPS 上把 Windows 防火墙规则限定为你自己的源 IP;或者通过 Windows 的 OpenSSH Server 功能建立 SSH 隧道,这样 RDP 端口完全不需要对外开放:

ssh -N -L 13389:localhost:3389 [email protected]
# in a second terminal
xfreerdp3 /v:localhost:13389 /u:Administrator /from-stdin +dynamic-resolution +clipboard

无论选择哪条路径,都要保持 NLA 开启并启用账户锁定策略。

以上都以「有一台值得连接的 Windows 机器」为前提。如果目标只是让 Linux 桌面随时能用上 Windows(为了没有 Linux 版本的软件,或者需要在笔记本休眠时仍保持运行的会话),那么一台会为更新自行重启、还藏在你无法配置的路由器后面的家用电脑并不是好选择。托管的具备完整管理员权限的 Windows RDP 服务器更简单:rdp.monster 在支付确认后约 10 秒完成开通,提供独享 CPU 与内存、无限流量(合理使用)、无需 KYC、支持加密货币,每月 $8.99 起。对 Remmina 或 xfreerdp 来说,它就是一台普通的 Windows 主机。

常见问题

Linux 自带连接 Windows 的远程桌面客户端吗?

没有任何发行版附带微软的客户端;Remmina、GNOME Connections 和 KRDC 都是对开源 FreeRDP 库的封装。
微软没有提供:Windows App 不支持 Linux。大多数发行版提供的是 FreeRDP,一个开源的 RDP 实现,以及基于它构建的图形前端。GNOME 附带 Connections,KDE 附带 KRDC,而 Remmina 是跨桌面的选择,支持保存配置文件且选项最多。它们使用的协议与微软客户端完全相同,包括 NLA 和现代 GFX 编解码器,所以 Windows 主机分辨不出差别。用 apt install remmina remmina-plugin-rdp 或你所用发行版的等效命令安装。

我能从 Linux 远程桌面连接到 Windows 11 家庭版吗?

不能,家庭版无法接受传入的 RDP 会话,无论使用什么客户端。
不能。Windows 11 家庭版不包含远程桌面主机组件,所以 Remmina 和 xfreerdp 都无法连接,设置中也根本没有远程桌面开关。可选方案是把那台电脑升级到 Windows 11 专业版、使用不依赖 RDP 的第三方屏幕共享工具,或者连接托管的 Windows 机器,例如 Windows VPS:它运行 Server 或 Pro 版,出厂即启用 RDP,并且无需额外配置就能接受 Linux 客户端。

如何通过 RDP 在 Linux 和 Windows 之间复制文件?

重定向一个文件夹(xfreerdp 用 /drive,Remmina 用 Share folder),它会作为一个驱动器出现在 Windows 会话中。
请用驱动器重定向,而不是剪贴板。使用 xfreerdp 时加上 /drive:share,/home/you/folder,该目录就会作为重定向驱动器出现在 Windows 资源管理器的 This PC 下;在 Remmina 中,则在配置文件的 Basic 选项卡里设置 Share folder。之后就能用资源管理器的普通拖放在两个方向上复制,大文件这样传输比通过剪贴板粘贴可靠得多。如果驱动器始终不出现,可能是 Windows 一侧的组策略阻止了驱动器重定向。

从 Linux 连接的 RDP 会话为什么很慢,怎么加速?

往返延迟和编解码器选择影响最大;链路好就选 GFX/H.264,链路差就用 16 位色并关闭壁纸。
RDP 对延迟比对带宽更敏感,因此远端主机总会比近端主机显得卡顿。在这个限制之内,编解码器最关键:在快速链路上,/gfx:AVC444(或 Remmina 中的 GFX AVC444 色深)在 Windows 10、11 以及 Server 2016 及更高版本上画质最好。在慢速或丢包链路上,降到 /bpp:16,加上 -wallpaper -themes,其余交给 /network:auto 自动调节。客户端一侧使用有线连接可以消除最常见的卡顿来源。

Adrien Roche, 基础设施与主机托管编辑

系统工程师,拥有 10 年以上运维 Windows Server 和 Linux 集群的经验。Adrien 负责 rdp.monster 的基础设施文档,并撰写关于 RDP、VPS 托管、服务器管理、网络和隐私工具的指南。

注册加入我们的分销商计划

您的信息

如有任何疑问, contact us by clicking here !
姓名(必填)
请填写您的邮箱地址,您必须拥有以下网站的账号: manager.rdp.monster !

您的公司

如果您有网站,请填写网址
请简要说明您打算如何向客户销售服务,例如在论坛上与人交流推广。

我们使用 cookie !

我们使用 cookie 来改善您的浏览体验、提供个性化的广告或内容,并分析我们的流量。点击「接受」即表示您同意我们使用 cookie。