VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04
Π’ nakaraang artikulo tinalakay namin ang pagpapatakbo ng isang VNC server sa isang virtual machine ng anumang uri. Ang pagpipiliang ito ay may maraming mga disadvantages, ang pangunahing isa sa mga ito ay ang mataas na mga kinakailangan para sa throughput ng mga channel ng paghahatid ng data. Ngayon ay susubukan naming kumonekta sa isang graphical na desktop sa Linux sa pamamagitan ng RDP (Remote Desktop Protocol). Ang sistema ng VNC ay batay sa pagpapadala ng mga array ng mga pixel gamit ang RFB (Remote Framebuffer) protocol, at pinapayagan ka ng RDP na magpadala ng mas kumplikadong mga primitive ng graphics at mga high-level na command. Karaniwan itong ginagamit upang mag-host ng Mga Serbisyo ng Remote Desktop sa Windows, ngunit magagamit din ang mga server para sa Linux.

Talaan ng nilalaman:

Pag-install ng graphical na kapaligiran
Russification ng server at pag-install ng software
Pag-install at pag-configure ng isang RDP server
Pagse-set up ng firewall
Kumokonekta sa isang RDP server
Session Manager at User Session
Pagpapalit ng mga layout ng keyboard

Pag-install ng graphical na kapaligiran

Kukuha kami ng virtual machine na may Ubuntu Server 18.04 LTS na may dalawang computing core, apat na gigabytes ng RAM at isang dalawampung gigabyte hard drive (HDD). Ang isang mas mahinang configuration ay hindi angkop para sa isang graphical na desktop, bagama't ito ay depende sa mga gawaing niresolba. Huwag kalimutang gamitin ang promo code na Habrahabr10 para makakuha ng 10% discount sa iyong order.

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04
Ang pag-install ng desktop environment kasama ang lahat ng dependencies ay ginagawa gamit ang sumusunod na command:

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

Tulad ng sa nakaraang kaso, pinili namin ang XFCE dahil sa medyo mababang computing resource kinakailangan nito.

Russification ng server at pag-install ng software

Kadalasan, ang mga virtual machine ay na-deploy lamang sa English localization. Sa desktop maaaring kailanganin mo ang Russian, na madaling i-set up. Una, mag-install tayo ng mga pagsasalin para sa mga system program:

sudo apt-get install language-pack-ru

I-set up natin ang localization:

sudo update-locale LANG=ru_RU.UTF-8

Ang parehong epekto ay maaaring makamit sa pamamagitan ng manu-manong pag-edit ng /etc/default/locale.

Para sa localization ng GNOME at KDE, ang repository ay mayroong language-pack-gnome-ru at language-pack-kde-ru packages - kakailanganin mo ang mga ito kung gagamit ka ng mga program mula sa mga desktop environment na ito. Sa XFCE, naka-install ang mga pagsasalin kasama ng mga application. Susunod na maaari mong i-install ang mga diksyunaryo:

# Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΡ€Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ
sudo apt-get install hunspell hunspell-ru

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

# Англо-русский ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ DICT
sudo apt-get install mueller7-dict

Bilang karagdagan, maaaring kailanganin ang pag-install ng mga pagsasalin para sa ilang mga application program:

# Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ 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

Kinukumpleto nito ang paghahanda ng desktop environment, ang natitira na lang ay i-configure ang RDP server.

Pag-install at pag-configure ng isang RDP server

Ang mga repositoryo ng Ubuntu ay may malayang ipinamamahaging Xrdp server, na gagamitin namin:

sudo apt-get install xrdp

Kung naging maayos ang lahat, dapat na awtomatikong magsimula ang server:

sudo systemctl status xrdp

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04
Gumagana ang Xrdp server na may mga karapatan ng gumagamit ng xrdp at bilang default ay kinukuha ang /etc/ssl/private/ssl-cert-snakeoil.key certificate, na maaaring palitan ng iyong sarili. Upang magkaroon ng access na basahin ang file, kailangan mong idagdag ang user sa ssl-cert group:

sudo adduser xrdp ssl-cert

Ang mga default na setting ay matatagpuan sa /etc/default/xrdp file, at lahat ng iba pang mga file ng configuration ng server ay matatagpuan sa /etc/xrdp na direktoryo. Ang mga pangunahing parameter ay nasa xrdp.ini file, na hindi kailangang baguhin. Ang config ay mahusay na dokumentado, at ang kaukulang mga manpage ay kasama:

man xrdp.ini
man xrdp

Ang natitira na lang ay i-edit ang /etc/xrdp/startwm.sh script, na isasagawa kapag sinimulan ang session ng user. Una, gumawa tayo ng backup na kopya ng script mula sa pamamahagi:

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

Upang simulan ang XFCE desktop environment, kakailanganin mo ng script na tulad nito:

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

Mangyaring tandaan: sa mga script mas mahusay na isulat ang buong landas sa mga maipapatupad na file - ito ay isang magandang ugali. Gawin nating executable ang script at sa puntong ito ay maituturing na kumpleto ang setup ng Xrdp server:

sudo chmod 755 /etc/xrdp/startwm.sh

I-restart ang server:

sudo systemctl restart xrdp

Pagse-set up ng firewall

Bilang default, nakikinig ang Xrdp sa TCP port 3389 sa lahat ng mga interface. Depende sa configuration ng virtual server, maaaring kailanganin mong i-configure ang isang Netfilter firewall. Sa Linux ito ay karaniwang ginagawa gamit ang iptables utility, ngunit sa Ubuntu mas mainam na gumamit ng ufw. Kung ang IP address ng kliyente ay kilala, ang pagsasaayos ay isinasagawa gamit ang sumusunod na utos:

sudo ufw allow from IP_Address to any port 3389

Maaari mong payagan ang mga koneksyon mula sa anumang IP tulad nito:

sudo ufw allow 3389

Sinusuportahan ng RDP protocol ang pag-encrypt, ngunit ang paglalantad ng Xrdp server sa mga pampublikong network ay isang masamang ideya. Kung ang kliyente ay walang nakapirming IP, ang server ay dapat lamang makinig sa localhost upang madagdagan ang seguridad. Pinakamainam na i-access ito sa pamamagitan ng isang SSH tunnel, na ligtas na magre-redirect ng trapiko mula sa computer ng kliyente. Mayroon kaming isang katulad na diskarte ginamit sa nakaraang artikulo para sa VNC server.

Kumokonekta sa isang RDP server

Upang gumana sa kapaligiran ng desktop, mas mahusay na lumikha ng isang hiwalay na walang pribilehiyo na gumagamit:

sudo adduser rdpuser

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04
Idagdag natin ang user sa sudo group para magawa niya ang mga gawaing nauugnay sa administrasyon. Kung walang ganoong pangangailangan, maaari mong laktawan ang hakbang na ito:

sudo gpasswd -a rdpuser sudo

Maaari kang kumonekta sa server gamit ang anumang RDP client, kabilang ang built-in na Windows Remote Desktop Services client. Kung ang Xrdp ay nakikinig sa panlabas na interface, walang karagdagang mga aksyon na kakailanganin. Ito ay sapat na upang tukuyin ang VPS IP address, username at password sa mga setting ng koneksyon. Pagkatapos kumonekta, makakakita tayo ng ganito:

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04
Pagkatapos ng paunang pag-setup ng desktop environment, makakakuha tayo ng ganap na desktop. Tulad ng nakikita mo, hindi ito kumonsumo ng maraming mapagkukunan, kahit na ang lahat ay nakasalalay sa mga application na ginamit.

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04
Kung ang Xrdp server ay nakikinig lamang sa localhost, ang trapiko sa client computer ay kailangang ma-package sa isang SSH tunnel (ang sshd ay dapat na tumatakbo sa VPS). Sa Windows, maaari kang gumamit ng graphical na SSH client (halimbawa, PuTTY), at sa UNIX system kailangan mo ng ssh utility:

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

Pagkatapos masimulan ang tunnel, hindi na kumonekta ang RDP client sa malayong server, ngunit sa lokal na host.

Mas mahirap ito sa mga mobile device: Ang mga kliyente ng SSH na may kakayahang magtaas ng tunnel ay kailangang bilhin, at sa iOS at iPadOS, mahirap ang pagpapatakbo sa background ng mga third-party na application dahil sa napakahusay na pag-optimize ng pagkonsumo ng enerhiya. Sa iPhone at iPad, hindi ka makakagawa ng tunnel sa isang hiwalay na application; kakailanganin mo ng harvester application na makakapagtatag mismo ng RDP connection sa pamamagitan ng SSH. Tulad ng, halimbawa Remoter Pro.

Session Manager at User Session

Direktang ipinapatupad sa Xrdp server ang kakayahang gumawa ng maraming user at hindi nangangailangan ng karagdagang configuration. Pagkatapos simulan ang serbisyo sa pamamagitan ng systemd, ang isang proseso ay tumatakbo sa daemon mode, nakikinig sa port 3389 at nakikipag-ugnayan sa pamamagitan ng localhost sa session manager.

ps aux |grep xrdp

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04
Ang session manager ay karaniwang hindi nakikita ng mga user, dahil ang login at password na tinukoy sa mga setting ng client ay awtomatikong inililipat dito. Kung hindi ito nangyari o may error sa panahon ng pagpapatunay, isang interactive na window sa pag-log in ang lalabas sa halip na ang desktop.

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04
Ang awtomatikong paglunsad ng session manager ay tinukoy sa /etc/default/xrdp file, at ang configuration ay naka-store sa /etc/xrdp/sesman.ini. Bilang default, ganito ang hitsura nito:

[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]

Hindi mo kailangang baguhin ang anuman dito, kailangan mo lang i-disable ang pag-login gamit ang mga karapatan sa ugat (AllowRootLogin=false). Para sa bawat user na pinahintulutan sa system, ang isang hiwalay na proseso ng xrdp ay inilunsad: kung ididiskonekta mo nang hindi tinatapos ang session, ang mga proseso ng user ay patuloy na tatakbo bilang default, at maaari kang kumonekta muli sa session. Maaaring baguhin ang mga setting sa /etc/xrdp/sesman.ini file ([Sessions] section).

Pagpapalit ng mga layout ng keyboard

Karaniwang walang mga problema sa isang two-way na clipboard, ngunit sa layout ng keyboard ng Russian kailangan mong maglaro nang kaunti (ang lokal na Russian ay dapat na na-install). I-edit natin ang mga setting ng keyboard ng Xrdp server:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Kailangan mong idagdag ang mga sumusunod na linya sa dulo ng configuration file:

[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

Ang natitira na lang ay i-save ang file at i-restart ang Xrdp:

sudo systemctl restart xrdp

Tulad ng nakikita mo, hindi mahirap mag-set up ng RDP server sa isang Linux VPS, ngunit nakaraang artikulo Napag-usapan na namin ang pag-setup ng VNC. Bilang karagdagan sa mga teknolohiyang ito, mayroong isa pang kawili-wiling opsyon: ang X3Go system gamit ang isang binagong NX 2 protocol. Haharapin natin ito sa susunod na publikasyon.

VPS sa Linux na may graphical na interface: paglulunsad ng RDP server sa Ubuntu 18.04

Pinagmulan: www.habr.com

Magdagdag ng komento