-1 什么是远程桌面

Windows远程桌面(Remote Desktop,基于RDP协议)是微软系统内置的一项网络控制功能,允许用户通过其他设备跨网络完全接管另一台电脑的桌面环境。

比如你出差在外,只带了一台笔记本,忽然急需公司电脑里保存的文件或专业软件。这时候只要打开“远程桌面”,公司电脑的整个画面就会出现在你笔记本的屏幕上,并且你能使用鼠标键盘操作办公电脑,就像本人正坐在办公室工位前亲自操作一样。

0 测试环境

项目测试版本 / 说明
本地计算机操作系统Windows 10 (x86_64)
远程计算机操作系统Debian 13 (x86_64)

1 前置条件

  1. 已有远程计算机的 IP 地址,并能连接上。
  2. 远程计算机上已安装有桌面环境,如 Gnome、Xfce 等。

[!info] 远程计算机

远程计算机并非指物理距离远,而是相对本地电脑而言,无法直接鼠标键盘可操作,本地计算机可通过 IP 地址连接上的。

一个局域网内的其他计算机,或通过 easytier 建立的虚拟局域网内的计算机,或者有公共 IP 的 VPS、云主机等,都可使用 Windows 的远程桌面连接。

2 主要步骤

在远程计算机(Debian 系统)上:

1
2
sudo apt update
sudo apt install xrdp -y

[!tip] Debian 以外 Linux 系统采用各自包管理器安装 xrdp 即可。

在本地计算机(Windows 系统)上:

  1. 开始 菜单的 Windows附件 中打开 远程桌面连接 窗口;
  2. 计算机(C) 栏输入远程计算机 IP 地址,点击 连接;
  3. 弹出窗口提示『无法验证此远程计算机的身份。是否仍要连接?』,如果确定是自己的计算机安全可靠,直接点击 是;
  4. 连接上远程计算机后,弹出 Xrdp 窗口,在 username 栏填入远程计算机上的用户名,在 password 栏填入用户密码,点击 OK;
  5. 正常登录上远程计算机,窗口会展示远程桌面,全屏显示后与远程计算机上的桌面操作一致,只不过会在屏幕正中最上方有个标题栏显示远程计算机 IP,提示这是远程桌面。

Windows 上操作流程参考以下截图:

3 避坑指南(FAQ)

Q1 无桌面环境的远程计算机无法使用远程桌面连接

如果你的远程计算机是服务器厂家提供的 VPS、云主机之类的,一般默认安装服务器版本 Debian 系统,初始不带桌面系统。在使用远程桌面前,需要先安装一个桌面环境。

Linux 的桌面环境很多,GNOME、KDE Plasma、Xfce、Cinnamon 和 MATE 等,有些比较耗硬件资源,按自己喜好以及远程计算机的配置装一个。以下以安装 xfce 为例。

1
2
sudo apt update
sudo apt install -y xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

然后再根据之前步骤安装 xrdp。

同理,你在自己的服务器上安装的服务器版系统,也是如此。

Q2 如果远程计算机上安装了防火墙,可能需要开放 3389 端口

如果你的 Debian 服务器开启了防火墙,需要放行远程桌面默认的 3389 端口。Linux 常用的防火墙软件有 ufw、iptables 、 nftables 和 firewalld,各软件开启 3389 端口方法如下。

ufw 开启 3389 端口

1
2
sudo ufw allow 3389/tcp
sudo ufw reload

iptables 开启 3389 端口

iptables 的规则在重启后会失效,操作时必须进行持久化保存。

添加允许 3389 端口的规则:

1
sudo iptables -A INPUT -p tcp --dport 3389 -j ACCEPT

保存规则(防止重启后失效):

1
2
3
4
5
# 如果未安装,先安装持久化工具
sudo apt install -y iptables-persistent

# 保存当前 IPv4 规则
sudo sh -c "iptables-save > /etc/iptables/rules.v4"

nftables 开启 3389 端口

添加允许 3389 端口的规则:

通常 Debian 默认的过滤表和链名为 inet filter input,可以使用以下命令直接追加规则:

1
sudo nft add rule inet filter input tcp dport 3389 accept

保存规则(防止重启后失效):
在 Debian 中,将当前规则保存至默认配置文件中,并确保服务开机自启:

1
2
sudo sh -c "nft list ruleset > /etc/nftables.conf"
sudo systemctl enable nftables

firewalld 开启 3389 端口

在默认区域(通常是 public)永久开放 3389 端口:

1
sudo firewall-cmd --zone=public --add-port=3389/tcp --permanent

重新加载配置以使规则生效:

1
sudo firewall-cmd --reload

验证端口是否已成功开放:

1
sudo firewall-cmd --zone=public --list-ports

验证端口是否成功开启与监听

无论使用哪种防火墙,配置完成后,您都可以在 Debian 上执行以下命令,检查系统是否已经在正确监听 3389 端口。

1
2
3
sudo ss -tuln | grep 3389
# 或者
sudo netstat -tulnp | grep 3389

如果输出中包含 *:3389 或 0.0.0.0:3389 且状态为 LISTEN,说明本地 XRDP 服务运行正常,可以配合防火墙规则接受外部连接了。

Q3 远程计算机不在局域网内、没有公网 IP

这种情况很常见,自己的服务器计算机在家里,上班时候在公司如果能连接远程桌面使用就很方便。

这种情况,要么用内网穿透工具给家里的服务器配置一个公网地址,不管在哪都能访问;要么使用 zerotier、easytier 这类组网工具,把家里的服务器、办公计算机放进一个虚拟局域网中,只有这个局域网中的计算机可以连接服务器。

如果要使用远程桌面,建议组建虚拟局域网。配置公网地址涉及流量转发,不一定稳定且传输速率难保证。