如何在Ubuntu 22.04上使用xrdp启用远程桌面协议

作者选择了COVID-19救助基金作为为捐赠而写计划的一部分收到捐赠。

介绍

远程桌面协议(RDP)是由Microsoft开发的一种网络协议,允许用户远程访问和与远程Windows服务器的图形用户界面进行交互。RDP采用客户端-服务器模型,其中在本地计算机上安装了RDP客户端,而在远程服务器上安装了RDP服务器。

RDP广泛用于Windows远程连接,但您也可以使用类似xrdp的工具访问和与远程Linux服务器的图形用户界面进行交互,xrdp是RDP服务器的开源实现之一。

在本教程中,您将在Ubuntu 22.04服务器上使用xrdp安装和配置RDP服务器,并使用本地计算机上的RDP客户端访问它。您将了解通过配置和使用RDP连接建立对远程Linux服务器的访问。

使用DigitalOcean App Platform从GitHub部署您的前端应用。让DigitalOcean专注于扩展您的应用。

先决条件

要完成本教程,您需要:

  • 一个Ubuntu 22.04服务器,具有非root用户的sudo权限,防火墙和至少1GB的RAM,您可以按照Ubuntu 22.04初始服务器设置指南进行设置。

  • 一台安装了RDP客户端的本地计算机。以下是不同操作系统可用的RDP客户端列表:

步骤 1 — 在 Ubuntu 上安装桌面环境

在此步骤中,您将在 Ubuntu 服务器上安装并配置桌面环境。默认情况下,Ubuntu 服务器仅带有终端环境。需要安装桌面环境以访问用户界面。

从适用于 Ubuntu 的选项中,您将安装 Xfce 桌面环境。Xfce 为基于 Linux 的系统提供了轻量级、用户友好的桌面环境。

首先,使用以下命令通过 SSH 连接到服务器并更新可用包的列表:

  1. sudo apt update

接下来,在服务器上安装 xfcexfce-goodies 包:

  1. sudo apt install xfce4 xfce4-goodies -y

您将被提示选择显示管理器,这是一个管理图形登录机制和用户会话的程序。您可以从可用显示管理器的列表中选择任何选项,但本教程将使用 gdm3

安装桌面环境后,现在您将在服务器上安装xrdp。

第2步 — 在Ubuntu上安装xrdp

xrdp是一个开源的RDP服务器实现,允许Linux服务器进行RDP连接。在这一步中,您将在Ubuntu服务器上安装xrdp。

要安装xrdp,请在终端中运行以下命令:

  1. sudo apt install xrdp -y

安装xrdp后,使用systemctl验证xrdp的状态:

  1. sudo systemctl status xrdp

该命令将显示状态为active (running)

Output
● xrdp.service - xrdp daemon Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled) Active: **active (running)** since Sun 2022-08-07 13:00:44 UTC; 26s ago Docs: man:xrdp(8) man:xrdp.ini(5) Main PID: 17904 (xrdp) Tasks: 1 (limit: 1131) Memory: 1016.0K CGroup: /system.slice/xrdp.service └─17904 /usr/sbin/xrdp

如果xrdp的状态不是running,您可能需要使用以下命令手动启动服务:

  1. sudo systemctl start xrdp

执行上述命令后,再次验证状态,确保xrdp处于running状态。

您现在已经在服务器上安装了xrdp。接下来,您将查看xrdp配置以接受来自远程客户端的连接。

第3步 — 配置xrdp并更新您的防火墙

在这一步,您将审查存储在/etc/xrdp/xrdp.ini下的xrdp默认配置,并添加一个RDP连接的配置。您还将更新防火墙设置。

xrdp.ini是设置到xrdp服务器的RDP连接的默认配置文件。该配置文件可以修改和定制以满足RDP连接的要求。

使用nano文本编辑器或您选择的任何编辑器打开文件:

  1. sudo nano /etc/xrdp/xrdp.ini

配置文件包含不同的部分:

  • Globals定义了一些xrdp的全局配置设置。
  • Logging定义了日志的日志子系统参数。
  • Channels定义了RDP支持的多个通道参数。
  • 会话类型定义了xrdp支持的多个会话类型。每个会话类型配置都被定义为其会话类型名称的单独部分,该名称用方括号括起来,例如[Xorg][XVnc]。文件中没有[Sessions types]标题;相反,它被写为注释。

在配置文件中,导航到Session types部分。您将找到列出多个支持的会话类型及其参数:

Output
... ; ; Session types ; ; Some session types such as Xorg, X11rdp, and Xvnc start a display server. ; Startup command-line parameters for the display server are configured ; in sesman.ini. See and configure also sesman.ini. [Xorg] name=Xorg lib=libxup.so username=ask password=ask ip=127.0.0.1 port=-1 code=20 [Xvnc] name=Xvnc lib=libvnc.so username=ask password=ask ip=127.0.0.1 port=-1 #xserverbpp=24 #delay_ms=2000 [vnc-any] ... [neutrinordp-any] ... ...

默认情况下,usernamepassword 参数被设置为 ask,这意味着用户将被提示输入他们的用户名和密码以通过 RDP 进行连接。必要时可以修改参数,如 nameusernamepassword。对于与服务器的初始 RDP 连接, 默认配置即可。

完成后保存并关闭文件。

如果您尚未在用户的主目录下,请转到那里:

  1. cd ~

接下来,您将在 /home/sammy 下创建一个 .xsession 文件,并将 xfce4-session 添加为登录时要使用的会话管理器:

  1. echo "xfce4-session" | tee .xsession

tee 将回显的字符串 "xfce4-session" 写入文件 .xsession。以上配置确保在图形登录请求时使用 xfce4-session 作为会话管理器。由于安装了 xfce 作为您的桌面环境,xfce4-session 作为其会话管理器。如果您不在 .xsession 文件中包含此信息,则不会选择会话管理器,RDP 会话将无法连接到图形显示。

重新启动 xrdp 服务器:

  1. sudo systemctl restart xrdp

接下来,您将配置防火墙以允许从您的公共 IP 在端口 3389 上进行远程连接。RDP 连接在 TCP/IP 端口 3389 上提供服务。要通过 RDP 访问远程服务器,您必须在防火墙中允许端口 3389

首先,找到您本地计算机的公共 IP 地址:

  1. curl ifconfig.me

在Windows上,使用Windows命令提示符运行此命令。

curl 发出请求到 ifconfig.me 并将您的公共IP作为输出返回:

Output
... your_local_ip

接下来,允许远程服务器上的RDP端口 3389 的访问,将your_local_ip 替换为上一个命令的输出:

  1. sudo ufw allow from your_local_ip/32 to any port 3389

验证您的 UFW 防火墙的状态:

  1. sudo ufw status

输出应该如下所示:

Output
Status: Active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 3389 ALLOW your_local_ip OpenSSH (v6) ALLOW Anywhere (v6) ...

您现在已经启用了端口 3389 来接受来自您的公共IP的连接。接下来,您将测试本地计算机到远程服务器的RDP连接。

第四步 — 测试RDP连接

在此步骤中,您将测试本地计算机的RDP连接。以下各节包括在Windows、macOS和Linux计算机上测试连接的操作。

在Windows上测试RDP连接

要使用Windows上的远程桌面连接客户端测试连接,请首先启动远程桌面连接应用程序。

在可填写的文本框中输入您的远程服务器的公共 IP 和用户名 计算机用户名。您可能需要按下 显示选项 的向下箭头来输入用户名:

点击 连接 按钮。如果收到提醒 远程桌面无法连接到远程计算机,请检查您是否在系统设置中打开了远程桌面选项。

如果收到身份验证弹出窗口,请点击

然后,输入您的远程服务器用户名(sammy)和您在初始服务器设置期间为用户 sammy 创建的密码。点击 确定

登录后,您应该能够访问您的 Ubuntu 桌面环境:

使用 RDP,您成功从本地计算机连接到了远程 Ubuntu 服务器。在完成使用图形桌面后,您可以使用退出按钮关闭连接。

在 macOS 上测试 RDP 连接

要使用 macOS 上的远程桌面连接客户端测试连接,首先启动 Microsoft 远程桌面连接应用程序。

点击 添加 PC,然后在可填写的框中输入您的远程服务器的公共 IP:

在设置连接时,您可以 添加用户账户

如果您在设置过程中没有添加用户,则会提示您输入用户登录凭据:

按下以跳过身份验证弹出窗口:

登录后,您可以访问您的Ubuntu远程桌面。当您完成使用图形桌面时,可以通过退出按钮关闭它。

在Linux上测试RDP连接

您需要一个RDP客户端来测试本地Linux机器上的RDP连接。首先,在Ubuntu上安装remmina RDP客户端:

  1. sudo apt install remmina

如果提示完成安装,请选择y。此命令将使用apt在您的Ubuntu系统上安装一个开源远程桌面客户端Remmina。对于其他Linux发行版,您可以查阅Remmina文档以进行安装

安装完成后,在本地Linux机器上启动remmina应用程序,并在可填写的框中输入您的远程服务器的公共IP。按下键盘上的Enter键以连接到远程桌面。

然后,输入您的远程服务器用户名(本教程中用户名为sammy)和您在初始服务器设置期间为用户创建的密码。按确定

您可能需要再次输入您的用户密码才能解锁远程桌面。

一旦您登录,您就可以访问您的Ubuntu桌面环境。

使用RDP,您成功地从本地计算机连接到了远程Ubuntu服务器。当您完成使用图形桌面后,您可以通过退出按钮关闭它。

一旦您确保远程连接正常工作,您可以在需要使用远程Linux服务器的图形界面时使用此序列。

结论

在本文中,您配置了xrdp以通过本地计算机的RDP连接连接到远程Ubuntu服务器的图形桌面。

现在,您可以尝试使用<VNC在Ubuntu 20.04上安装和配置VNC为您的Linux服务器配置VNC连接。 VNC是远程连接到Linux桌面的另一种选择。

Source:
https://www.digitalocean.com/community/tutorials/how-to-enable-remote-desktop-protocol-using-xrdp-on-ubuntu-22-04