Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器
В 以前的文章 我们讨论了在任何类型的虚拟机上运行 VNC 服务器。 这种方案有很多缺点,其中最主要的一个是对数据传输通道的吞吐量要求较高。 今天我们将尝试通过 RDP(远程桌面协议)连接到 Linux 上的图形桌面。 VNC 系统基于使用 RFB(远程帧缓冲区)协议传输像素阵列,而 RDP 允许您发送更复杂的图形基元和高级命令。 它通常用于在 Windows 上托管远程桌面服务,但也可以使用适用于 Linux 的服务器。

目录:

安装图形环境
服务器和软件安装的俄罗斯化
安装和配置 RDP 服务器
设置防火墙
连接到 RDP 服务器
会话管理器和用户会话
切换键盘布局

安装图形环境

我们将采用一台配备 Ubuntu Server 18.04 LTS 的虚拟机,该虚拟机具有两个计算核心、10 GB RAM 和 10 GB 硬盘 (HDD)。 较弱的配置不适合图形桌面,尽管这取决于要解决的任务。 不要忘记使用促销代码 HabrahabrXNUMX 以获得订单 XNUMX% 的折扣。

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器
使用以下命令安装具有所有依赖项的桌面环境:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

和前面的案例一样,我们选择XFCE是因为它对计算资源的要求相对较低。

服务器和软件安装的俄罗斯化

通常,虚拟机仅以英语本地化方式部署。 在桌面上,您可能需要俄语,这很容易设置。 首先,让我们安装系统程序的翻译:

sudo apt-get install language-pack-ru

让我们设置本地化:

sudo update-locale LANG=ru_RU.UTF-8

通过手动编辑 /etc/default/locale 可以达到相同的效果。

对于 GNOME 和 KDE 的本地化,存储库具有 language-pack-gnome-ru 和 language-pack-kde-ru 软件包 - 如果您使用这些桌面环境中的程序,您将需要它们。 在 XFCE 中,翻译与应用程序一起安装。 接下来您可以安装词典:

# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru

# Тезаурус для LibreOffice
sudo apt-get install mythes-ru

# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dict

此外,某些应用程序可能需要安装翻译:

# Браузер Firefox
sudo apt-get install firefox firefox-locale-ru

# Почтовый клиент Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru

# Офисный пакет LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ru

这样就完成了桌面环境的准备,剩下的就是配置RDP服务器了。

安装和配置 RDP 服务器

Ubuntu 存储库有一个免费分发的 Xrdp 服务器,我们将使用它:

sudo apt-get install xrdp

如果一切顺利,服务器应该自动启动:

sudo systemctl status xrdp

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器
Xrdp 服务器以 xrdp 用户权限运行,默认情况下采用 /etc/ssl/private/ssl-cert-snakeoil.key 证书,可以用您自己的证书替换。 要有权读取该文件,您需要将用户添加到 ssl-cert 组:

sudo adduser xrdp ssl-cert

默认设置可以在 /etc/default/xrdp 文件中找到,所有其他服务器配置文件都位于 /etc/xrdp 目录中。 主要参数在xrdp.ini文件中,不需要更改。 该配置有详细的文档记录,并且包含相应的联机帮助页:

man xrdp.ini
man xrdp

剩下的就是编辑 /etc/xrdp/startwm.sh 脚本,该脚本在用户会话初始化时执行。 首先,让我们从发行版中创建脚本的备份副本:

sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh

要启动 XFCE 桌面环境,您需要一个如下所示的脚本:

#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4

请注意:在脚本中最好编写可执行文件的完整路径 - 这是一个好习惯。 让我们使脚本可执行,此时 Xrdp 服务器的配置可以认为已完成:

sudo chmod 755 /etc/xrdp/startwm.sh

重新启动服务器:

sudo systemctl restart xrdp

设置防火墙

默认情况下,Xrdp 在所有接口上侦听 TCP 端口 3389。 根据虚拟服务器配置,您可能需要配置 Netfilter 防火墙。 在 Linux 上,这通常是使用 iptables 实用程序完成的,但在 Ubuntu 上,最好使用 ufw。 如果客户端的IP地址已知,则使用以下命令进行配置:

sudo ufw allow from IP_Address to any port 3389

您可以允许来自任何 IP 的连接,如下所示:

sudo ufw allow 3389

RDP 协议支持加密,但将 Xrdp 服务器暴露在公共网络中是一个坏主意。 如果客户端没有固定IP,服务器应该只监听localhost以增加安全性。 最好通过 SSH 隧道访问它,这将安全地重定向来自客户端计算机的流量。 我们有类似的方法 在上一篇文章中使用过 对于VNC服务器。

连接到 RDP 服务器

要使用桌面环境,最好创建一个单独的非特权用户:

sudo adduser rdpuser

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器
让我们将用户添加到 sudo 组,以便他可以执行与管理相关的任务。 如果没有这个需求,可以跳过这一步:

sudo gpasswd -a rdpuser sudo

您可以使用任何 RDP 客户端连接到服务器,包括内置的 Windows 远程桌面服务客户端。 如果 Xrdp 正在侦听外部接口,则无需执行其他操作。 在连接设置中指定 VPS IP 地址、用户名和密码就足够了。 连接后,我们会看到这样的内容:

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器
桌面环境初始设置完成后,我们将获得一个完整的桌面。 正如您所看到的,它不会消耗太多资源,尽管一切都取决于所使用的应用程序。

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器
如果 Xrdp 服务器仅侦听 localhost,则客户端计算机上的流量必须打包到 SSH 隧道中(sshd 必须在 VPS 上运行)。 在 Windows 上,您可以使用图形 SSH 客户端(例如 PuTTY),在 UNIX 系统上,您需要 ssh 实用程序:

ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip

隧道初始化后,RDP客户端将不再连接远程服务器,而是连接本地主机。

移动设备就更困难了:必须购买能够建立隧道的SSH客户端,而在iOS和iPadOS中,第三方应用程序的后台操作由于能耗优化得太好而变得困难。 在 iPhone 和 iPad 上,您将无法在单独的应用程序中创建隧道;您将需要一个本身可以通过 SSH 建立 RDP 连接的收割机应用程序。 比如说,比如 远程遥控专业版.

会话管理器和用户会话

多用户工作的能力直接在Xrdp服务器中实现,不需要额外的配置。 通过 systemd 启动服务后,一个进程以守护进程模式运行,侦听端口 3389 并通过 localhost 与会话管理器进行通信。

ps aux |grep xrdp

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器

sudo netstat -ap |grep xrdp

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器
会话管理器通常对用户不可见,因为客户端设置中指定的登录名和密码会自动传输给它。 如果没有发生这种情况或者身份验证过程中出现错误,则会出现交互式登录窗口而不是桌面。

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器
自动启动会话管理器在 /etc/default/xrdp 文件中指定,配置存储在 /etc/xrdp/sesman.ini 中。 默认情况下,它看起来像这样:

[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh

[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false

[Sessions]

您不必在此处进行任何更改,只需禁用 root 权限登录 (AllowRootLogin=false)。 对于系统中授权的每个用户,都会启动一个单独的 xrdp 进程:如果您在未结束会话的情况下断开连接,用户进程将默认继续运行,您可以再次连接到会话。 可以在 /etc/xrdp/sesman.ini 文件([Sessions] 部分)中更改设置。

切换键盘布局

双向剪贴板通常没有问题,但是使用俄语键盘布局,您将不得不稍微尝试一下(俄语区域设置应该已经是 安装)。 让我们编辑 Xrdp 服务器的键盘设置:

sudo nano /etc/xrdp/xrdp_keyboard.ini

您需要将以下行添加到配置文件的末尾:

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru

剩下的就是保存文件并重新启动 Xrdp:

sudo systemctl restart xrdp

正如你所看到的,在Linux VPS上设置RDP服务器并不困难,但是 以前的文章 我们已经讨论了 VNC 设置。 除了这些技术之外,还有另一个有趣的选择:使用修改后的 NX 3 协议的 X2Go 系统。 我们将在下一篇文章中处理它。

Linux 上具有图形界面的 VPS:在 Ubuntu 18.04 上启动 RDP 服务器

来源: habr.com

添加评论