带有GUI的Linux上的VPS:在Ubuntu 18.04上运行RDP服务器



上一篇文章中,我们介绍了在任何类型的虚拟机上运行VNC服务器。此选项有很多缺点,主要缺点是对数据传输通道的带宽有很高的要求。今天,我们将尝试使用RDP(远程桌面协议)连接到图形化Linux桌面。VNC系统基于使用RFB(远程帧缓冲)协议的像素阵列传输,而RDP允许发送更复杂的图形基元和高级命令。它通常用于组织Windows上的远程桌面服务,但也可以使用Linux服务器。



目录:



安装图形环境

服务器虚拟化和软件

安装安装和配置RDP服务器

配置防火墙

连接到RDP服务器会话

管理器和用户会话

切换键盘布局



安装图形环境



我们将使用一台运行Ubuntu Server 18.04 LTS的虚拟机,该虚拟机具有两个处理核心,四个GB的RAM和一个20 GB的硬盘驱动器(HDD)。较弱的配置不太适合图形桌面,尽管它取决于要解决的任务。订购时,请不要忘记使用促销代码Habrahabr10获得10%的折扣。





使用以下命令完成具有所有依赖项的桌面环境的安装:



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




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




让我们将用户添加到sudo组中,以便他可以解决与管理相关的任务。如果没有这种需要,则可以跳过此步骤:



sudo gpasswd -a rdpuser sudo


您可以使用任何RDP客户端(包括内置的Windows Remote Desktop Services客户端)连接到服务器。如果Xrdp在外部接口上侦听,则不需要其他手势。在连接设置中指定VPS IP地址,用户名和密码就足够了。连接后,我们将看到以下内容:





初始设置桌面环境后,我们将获得完整的桌面。如您所见,它并不会消耗太多资源,尽管所有一切都取决于所使用的应用程序。





如果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连接。例如,例如Remoter Pro



会话管理器和用户会话



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



ps aux |grep xrdp




sudo netstat -ap |grep xrdp




会话管理器通常对用户不可见,因为在客户端设置中指定的登录名和密码会自动传送给它。如果这没有发生或在身份验证期间发生错误,则会出现一个交互式登录窗口,而不是桌面。





会话管理器的自动启动在/ 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文件([会话]部分)中更改设置。



切换键盘布局



使用双面剪贴板时,通常不会出现问题,但是使用俄语键盘布局时,您将需要进行一些修改(必须已安装俄语语言环境)。让我们编辑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系统。我们将在下一个出版物中处理。






All Articles