Windows 通过 xrdp 远程连接 Debian 12 的 Cinnamon 桌面
Last updated on July 27, 2025 pm
Windows 通过 xrdp 远程连接 Debian 12 的 Cinnamon 桌面
一、背景
尽管已经可以通过 SSH 进行访问,但我希望必要时能在 Windows 上使用远程桌面连接到 Debian 12 的远程机器。之前尝试过 ToDesk 方案,但感觉这个“一键安装”式的闭源软件没有那么完美。ToDesk 免费版存在画质压缩,而且进入桌面之后会直接弹一个登录对话框,听有人说还有时长限制,有些让人不够满意。听说微软的远程桌面非常强,这里我选择在被控 Linux 上安装 xrdp,它提供 rdp 协议的开源实现,然后使用 Windows 的远程桌面连接。
二、配置
被控 Debian 机器通过 apt 安装 xrdp 后,其通过 systemd 启动的 xrdp.service
会监听 3389 端口。
接下来我们需要在 Windows 上发起连接。如果 Linux 机器由于没有公网 IP 等原因无法直接被 Windows 机器连接,但可以通过 SSH 连接,可以借助 SSH 进行端口转发:Windows 终端执行
1 |
|
这时会把远程 3389 端口转发到本地 13389 端口。
在 Windows 下按 Win+R 打开运行,输入 mstsc
,即可打开“远程桌面连接”。在这里的计算机文本框填入机器的地址后点击连接。由于我进行了端口转发,这里填的是 localhost:13389
。
此时如果 Windows 可以连接到被控机器的话,应该会进入登录界面。我这里直接用要登录的用户和密码进行登录。
此时如果你已经在 Linux 的图形界面登录某个用户后,可能无法在远程桌面成功登录同一个用户,但可以登录未在远程物理机器上登录的用户。xrdp 的 GitHub Wiki 显示这是由于当前 systemd 不能正确处理同一用户多个会话。如果你需要在远程 Linux 机器上保持登录的同时远程桌面连接该用户,根据这篇文章,可以确保已经安装 dbus-x11
软件包,然后编辑 /etc/xrdp/startwm.sh
(这是登录成功后会执行的脚本),在合适位置(如test -x /etc/X11/Xsession && exec /etc/X11/Xsession
)前添加一行:
1 |
|
此时应该可以使用远程桌面了。