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

2023-11-17

作者选择了COVID-19 救济基金接受捐赠作为为捐款而写程序。

介绍

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

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

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

先决条件

要完成本教程,您将需要:

  • 一台带有非 root 用户的 Ubuntu 22.04 服务器sudo权限、防火墙和至少 1GB RAM,您可以通过以下方式进行设置Ubuntu 22.04 初始服务器设置指南.

  • 安装了 RDP 客户端的本地计算机。下面提供了适用于不同操作系统的可用 RDP 客户端列表:

    • 在 Windows 上,您可以使用默认的远程桌面连接应用程序。
    • 在 macOS 上,您可以使用微软远程桌面应用程序.
    • 在 Linux 上,您可以使用FreeRDP, or Remmina.

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

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

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

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

  1. sudo apt update

接下来,安装xfce and xfce-goodies您服务器上的包:

  1. sudo apt installxfce4 xfce4-好东西-y

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

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

步骤 2 — 在 Ubuntu 上安装 xrdp

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

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

  1. sudo apt install xrdp -y

安装 xrdp 后,使用以下命令验证 xrdp 的状态systemctl:

  1. sudosystemctl 状态 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. sudosystemctl 启动 xrdp

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

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

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

在此步骤中,您将查看 xrdp 的默认配置,该配置存储在/etc/xrdp/xrdp.ini,并添加 RDP 连接的配置。您还将更新防火墙设置。

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

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

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

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

  • Globals定义 xrdp 的一些全局配置设置。
  • Logging定义日志的日志记录子系统参数。
  • Channels定义了 RDP 支持的多个通道参数。
  • 会话类型xrdp 定义了多种支持的会话类型。每个会话类型配置都被定义为其会话类型名称下的单独部分,并用方括号括起来,例如[Xorg] and [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] ... ...

默认情况下,username and password参数设置为ask,这意味着系统将提示用户输入用户名和密码以通过 RDP 连接。参数,例如name, username, and password,必要时可以修改。对于与服务器的初始 RDP 连接,默认配置就足够了。

完成后保存并关闭文件。

现在,如果您还不存在,请移至用户的主目录:

  1. cd ~

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

  1. echo “xfce4-会话” | tee.xsession

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

重新启动 xrdp 服务器:

  1. sudosystemctl 重新启动 xrdp

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

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

  1. curlifconfig.me

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

curl提出请求ifconfig.me返回您的公共 IP 作为输出:

Output
... your_local_ip

Next, allow access to the RDP port 3389 on your remote server, replacing your_local_ip with the output of the last command:

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

验证您的状态UFW防火墙:

  1. sudoUFW 状态

输出应如下所示:

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

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

步骤 4 — 测试 RDP 连接

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

在 Windows 上测试 RDP 连接

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

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

Screencapture of the Remote Desktop Connection Client initial logon page

Connect按钮。如果您收到一条警报,表明Remote Desktop can't connect to the remote computer,检查您是否已在系统设置中打开远程桌面选项。

Press Yes如果您收到身份验证弹出窗口:

Screencapture of the Identity Verification popup

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

Screencapture display the xrdp login screen

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

Screenapture of the remote Ubuntu Desktop

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

在 macOS 上测试 RDP 连接

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

Press Add PC,然后在可填写框中输入远程服务器的公共IP:

Screencapture showing the "Add PC" setup page with an empty box for the remote server's IP address

You can 添加用户帐户设置连接时:

Screencapture showing the "Add a username account" option

如果您在设置过程中未添加用户,系统将提示您输入用户登录凭据:

Screencapture showing the "Enter your user account" prompt

Press Yes绕过身份验证弹出窗口:

Screencapture showing the identity verification prompt

登录后,您可以访问 Ubuntu 远程桌面。使用完图形桌面后,可以使用退出按钮将其关闭。

在 Linux 上测试 RDP 连接

您将需要 RDP 客户端来测试本地 Linux 计算机上的 RDP 连接。首先,安装remmina适用于 Ubuntu 的 RDP 客户端:

  1. sudo apt install雷米纳

Select y如果提示完成安装。该命令将安装Remmina,Ubuntu 系统上的开源远程桌面客户端,使用apt。对于其他 Linux 发行版,您可以查看Remmina 安装文档.

安装后,启动remmina在本地 Linux 计算机上运行应用程序,然后在可填写框中输入远程服务器的公共 IP。按Enter通过键盘连接到远程桌面。

Screenapture showing the Remmina client with a blurred IP address entered in the RDP box

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

Screencapture showing the xrdp Login Screen with  selected for session type,  filled in the username box, and a redacted password in the password box

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

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

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

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

结论

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 22.04 上使用 xrdp 启用远程桌面协议 的相关文章

  • 如何以编程方式找出哪台计算机是 Windows 中的域控制器?

    我正在寻找一种方法来确定客户端计算机连接到的给定域的域控制器的名称 IP 地址 在我们公司 我们有很多用于测试的小型网络 其中大多数都有自己的小域 作为示例 其中一个域被命名为 TESTLAB 我有一个 Windows XP 工作站 它是
  • 扭曲多种协议

    我希望为我正在从事的项目学习扭曲 该项目需要服务器响应 HTTP 请求以及通过 TCP 连接的其他协议 Twisted能够同时处理多种协议吗 我想使用 Twisted Web 来帮助处理 HTTP 但同时需要响应其他端口上的 TCP 连接
  • 将 Docker 与具有 Node-gyp 依赖项的 Nodejs 一起使用

    我计划使用 Docker 部署 node js 应用程序 该应用程序有几个需要node gyp的依赖项 Node gyp 根据交付平台上的编译库构建这些模块 例如 canvas lwip qrcode 根据我的经验 这些构建可能高度依赖于操
  • 如何安装和管理多个版本的 R 包

    我正在开发一个使用 R 进行可重现计算的框架 我正在努力解决的一个问题是 某些 R 代码可能在包的 X Y Z 版本中完美运行 但是为什么你在 3 年后尝试重现它 这些包已经更新了 一些功能发生了变化 代码不再运行 此问题还会影响使用包的
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 在 WSL Ubuntu 20.04 上安装 npm 后,我收到消息“/usr/bin/env: ‘bash\r’: No such file or directory”

    运行时我看到以下消息npm install or npm来自终端的命令 执行中node按预期工作 gt npm install usr bin env bash r No such file or directory 2023 年 7 月更
  • 在 Ubuntu 中执行 .cgi 文件

    我在 Ubuntu 下运行 Apache PHP 当我运行 cgi 文件时 通过http localhost mycgi cgi 浏览器将显示代码而不是运行它 如何让浏览器执行 CGI 文件而不是显示其内容 将这些行添加到您的 apache
  • 通过 Telnet 运行应用程序

    我需要创建一个 BAT 文件来通过 telnet 运行应用程序 但据我所知 在 DOS 上无法执行此操作 Telnet 不允许在连接的瞬间向远程计算机发送任何命令 并且 BAT 文件中的每个后续命令只有在 telnet 停止后才会执行 这段
  • 如果其中一台机器死机,TCP 连接如何终止?

    如果两个主机 A 和 B 之间建立了 TCP 连接 假设主机 A 已向主机 B 发送了 5 个八位字节 然后主机 B 崩溃了 由于未知原因 主机 A 将等待确认 但如果没有收到确认 将重新发送八位字节并减小发送者窗口大小 这将重复几次 直到
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • 使用 g++ 5.3.1 编译的程序运行速度比使用 g++ 4.8.4 编译的相同程序慢 3 倍,相同的命令

    最近 我开始使用 Ubuntu 16 04 和 g 5 3 1 并检查我的程序是否运行慢3倍 在此之前我使用过 Ubuntu 14 04 g 4 8 4 我用相同的命令构建它 CFLAGS std c 11 Wall O3 我的程序包含循环
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • 什么会阻止 Docker 容器中运行的代码连接到单独服务器上的数据库?

    我有一个在 Ubuntu 14 04 上的 Docker 容器中运行的 NET Core 1 1 应用程序 它无法连接到在单独服务器上运行的 SQL Server 数据库 错误是 未处理的异常 System Data SqlClient S
  • 在初始化脚本中切换用户?

    这是我的 Ubuntu 工作站上的初始化脚本 我需要以除 root 之外的其他用户身份运行命令 但我就是不知道应该如何完成它 两者都不sudo u or su newuser似乎有效 剧本 respawn console none star
  • Pycharm 中的 Traitlets.traitlets.TraitError

    我是Python的初学者 我面临以下问题 每当我启动 pycharm 社区版 版本 5 0 3 时 Python 控制台无法启动并显示以下错误 usr bin python2 7 usr lib pycharm community help
  • 什么是 TTY?如何在 Ubuntu 上启用它?

    我目前正在设置一个 Node js 服务器 并且在这里使用调试模块https github com visionmedia debug https github com visionmedia debug 我正在尝试启用它 以便我可以在输出
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • 更改 TFS 构建代理的身份

    我们有一个运行集成测试的 TFS 构建代理 其中一些测试会调用 Internet 上的 Web 服务 我们的网络使用代理与互联网通信 由于构建代理在网络服务上的身份下运行 并且网络服务的设置未配置为使用代理 因此测试失败 我该如何执行以下操
  • 更改“/usr/bin/”的所有权:不允许操作

    我刚刚改变了我的所有者 犯了一个巨大的错误 usr bin from root对一个普通人user 每当我尝试执行时 sudo chown root usr bin这给了我 chown changing ownership of usr b

随机推荐

  • 如何在 CentOS 8 上安装和配置 Redmine

    Redmine 是一款免费的开源项目管理和问题跟踪应用程序 它是跨平台和跨数据库的 构建在 Ruby on Rails 框架之上 Redmine包括对多个项目 wiki 问题跟踪系统 论坛 日历 电子邮件通知等的支持 本教程介绍如何在 Ce
  • Linux 中的 Stat 命令

    stat是一个命令行实用程序 显示有关给定文件或文件系统的详细信息 本文介绍了如何使用stat命令 使用stat命令 语法为stat命令如下 stat OPTION FILE stat接受一个或多个输入FILE名称并包含许多控制命令行为和输
  • 如何在 CentOS 8 上安装 Python 3.8

    Python 是世界上使用最广泛的编程语言之一 凭借其简单易学的语法 Python 成为初学者和经验丰富的开发人员的热门选择 Python 是一种非常通用的编程语言 它可用于构建各种应用程序 从简单的脚本到复杂的机器学习算法 CentOS
  • Linux 中的 Chgrp 命令(更改组)

    在 Linux 中 每个文件都与一个所有者和一个组相关联 并具有确定哪些用户可以读取 写入或执行该文件的权限 本文介绍了如何使用chgrp命令更改给定文件的组所有权 chgrp命令语法 The chgrp命令采用以下形式 chgrp OPT
  • 如何在 CentOS 7 上安装 Ruby

    Ruby 是当今最流行的语言之一 它具有优雅的语法 是 Ruby on Rails 框架背后的语言 本文展示了在 CentOS 上安装 Ruby 的几种不同方法 每种安装方法都有自己的优点 您可以选择最适合您的一种安装方法 先决条件 在开始
  • 如何每 5 分钟、10 分钟或 15 分钟运行一次 Cron 作业

    cron 作业是按指定时间间隔执行的任务 可以将任务安排为按分钟 小时 每月的某一天 每月 每周的某一天或这些的任意组合运行 Cron 作业通常用于自动化系统维护或管理 例如备份数据库或数据 使用最新的安全补丁更新系统 检查磁盘空间使用情况
  • Bash:追加到文件

    在 Bash 中 有多种方法可以将文本附加到文件中 本文解释了其中一些 要将文本附加到文件 您需要对其具有写入权限 否则 您将收到权限被拒绝的错误 使用重定向运算符附加到文件 gt gt 重定向允许您捕获命令的输出并将其作为输入发送到另一个
  • 在 C/C++ 中使用 INT_MAX 和 INT_MIN

    在本文中 我们将了解在 C C 中使用 INT MAX 和 INT MIN 这些实际上是有用的宏 它们表示最大和最小整数值 让我们用一些例子来看看它 使用 INT MAX 和 INT MIN INT MAX 是一个表示最大整数值的宏 同样
  • Google Guice 依赖注入示例教程

    谷歌指南是在应用程序中自动执行依赖项注入的框架 如果您直接遇到这里 我建议您查看一下依赖注入示例在这里我们了解了传统对象创建方法的问题以及依赖注入的实现优势 在上一篇教程中 我们学习了如何在应用程序中手动实现依赖注入 但是 当应用程序中的类
  • 如何在 CentOS 7 上安装 MySQL

    介绍 MySQL是一个开源数据库管理系统 通常作为流行的一部分安装LEMP Linux Nginx MySQL MariaDB PHP Python Perl 堆栈 它使用关系数据库和 SQL 结构化查询语言 来管理其数据 CentOS 7
  • 如何配置 DNS 循环负载平衡以实现高可用性

    介绍 尽管这是一种更有争议的技术 但利用提供商的全球影响力在地理上分发应用程序的一个好方法是使用和管理 DNS 响应 即返回的 IP 地址列表 除非您愿意在硬件和基础设施成本上花费一点钱 否则使用 DNS 来实现高可用性可能是一个很好的方法
  • 如何在 CentOS 7 上使用 FreeIPA 设置集中式 Linux 身份验证

    介绍 FreeIPA是 Linux 的开源安全解决方案 提供帐户管理和集中身份验证 类似于 Microsoft 的 Active Directory FreeIPA 构建在多个开源项目之上 包括 389 Directory Server M
  • Spring Boot 教程

    欢迎来到 Spring Boot 教程 春季启动是 Pivotal Team The Spring Team 的一个全新项目 它是在现有 Spring 框架之上开发的框架 Spring Boot 教程 Spring Boot使用全新的开发模
  • 如何使用 Whisper 和 Spleeter AI 工具制作卡拉 OK 视频

    介绍 人工智能工具可用于处理图像 音频或视频以产生新颖的结果 直到最近 在不使用大量时间和计算能力的情况下 自动编辑图像或音频仍然具有挑战性 即使如此 通常也只能运行交钥匙滤波器来删除声音中的某些频率或更改图像的调色板 较新的方法使用人工智
  • JSF PrimeFaces 教程

    欢迎来到 JSF Primefaces 教程 JavaServer Faces是当今用于实现 Java Web 应用程序用户界面的领先框架之一 JSF 已经组件化了 Web 应用程序 特别是与界面相关的部分 因为 JSF 中的所有单一视图都
  • 如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin

    介绍 很大一部分网站和应用程序都需要 MySQL 等关系数据库管理系统 然而 并非所有用户都愿意从命令行管理数据 为了解决这个问题 创建了一个名为 phpMyAdmin 的项目 以提供基于 Web 的管理界面形式的替代方案 在本指南中 我们
  • 如何保护您的服务器免受 POODLE SSLv3 漏洞的影响

    介绍 2014年10月14日 SSL加密协议第3版中的漏洞被披露 该漏洞被称为 POODLE Padding Oracle On Downgraded Legacy Encryption 允许攻击者使用中间人攻击以纯文本形式读取使用此版本协
  • 如何配置 vsftpd 在 CentOS VPS 上使用 SSL/TLS

    介绍 Warning FTP 不安全 考虑使用 SFTP 代替 FTP FTP 即文件传输协议 是一种在本地和远程服务器之间传输文件的方式 尽管这种文件传输方法非常流行且无处不在 但由于其设计缺乏固有的安全性 它已经不再受欢迎 如上所述 S
  • 如何在 Ubuntu 14.04 上安装、配置和部署 Rocket.Chat

    介绍 火箭聊天是一个用 Meteor 构建的开源消息传递应用程序 它支持视频会议 文件共享 语音消息 拥有功能齐全的 API 等等 Rocket Chat 对于那些喜欢完全控制自己的通信的人来说非常有用 在本教程中 我们将在新的 Ubunt
  • 如何在 Ubuntu 22.04 上使用 xrdp 启用远程桌面协议

    作者选择了COVID 19 救济基金接受捐赠作为为捐款而写程序 介绍 远程桌面协议 RDP 是 Microsoft 开发的一种网络协议 允许用户远程访问远程 Windows 服务器的图形用户界面并与之交互 RDP 采用客户端 服务器模型 其