V oleme käsitlenud VNC-serveri käivitamist igat tüüpi virtuaalmasinas. Selle variandi peamine puudus on kõrged nõudet edastuskanali ribalaiust. Täna proovime ühendada Linuxi graafilise laua RDP (Remote Desktop Protocol) kaudu. VNC-süsteem põhineb pikslimasside edastamisel RFB (Remote Framebuffer) protokolli kaudu, samas kui RDP võimaldab saata keerukamaid graafilisi primitiive ja kõrgetasemelisi käske. Tavaline on see Windowsi kauglaudade teenuste korraldamisel, kuid Linuxi serverid on samuti saadaval.
Sisukord:
Graafilise keskkonna installimine
Me võtame virtuaalse masina, millel on Ubuntu Server 18.04 LTS, kaks protsessorit, neli gigabaiti RAM-i ja kõvaketas (HDD) 20 gigabaitiga. Nõrgem konfiguratsioon ei sobi hästi graafiliseks töölauaks, kuigi see sõltub tehtavatest ülesannetest. Ärge unustage kasutada sooduskoodi Habrahabr10, et saada 10% allahindlust tellimisel.

Töölaua keskkonna koos kõigi sõltuvustega installimiseks käivitage järgmine käsk:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsNagu eelnevas nähtud, valisime XFCE suhteliselt madalate arvutusressursside nõuete tõttu.
Serveri lokaliseerimine ja tarkvara installimine
Sageli paigaldatakse virtuaalsed masinad ainult ingliskeelse lokaliseerimisega. Töölaual võib olla vajalik vene keel, mille seadistamine pole keeruline. Alustame süsteemiprogrammide tõlgete installimisega:
sudo apt-get install language-pack-ruSeadistame lokaliseerimise:
sudo update-locale LANG=ru_RU.UTF-8Sama efekti saab saavutada, muutes käsitsi faili /etc/default/locale.
GNOME ja KDE lokaliseerimiseks on saadaval pakid language-pack-gnome-ru ja language-pack-kde-ru — need on vajalikud, kui plaanite kasutada rakendusi neist töölauakeskkondadest. XFCE puhul installitakse tõlked koos rakendustega. Edasi saab installida sõnaraamatud:
# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru
# Тезаурус для LibreOffice
sudo apt-get install mythes-ru
# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dictLisaks võib tõlgete installimine olla vajalik teatud rakenduste jaoks:
# Браузер 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-ruSellega töölaua keskkonna ettevalmistamine on lõpetatud, nüüd tuleb konfigureerida RDP server.
RDP serveri installimine ja seadistamine
Ubuntu hoidlatest leiate vabalt jaotatava Xrdp serveri, mida me kasutame:
sudo apt-get install xrdpKui kõik läks korralikult, peaks server automaatselt käivituma:
sudo systemctl status xrdp 
Xrdp server käivitub kasutaja xrdp õigustega ja默认 kasutab sertifikaati /etc/ssl/private/ssl-cert-snakeoil.key, mida saab asendada oma omaga. Faili lugemisõiguse saamiseks tuleb kasutaja lisada ssl-cert gruppi:
sudo adduser xrdp ssl-certVaikimisi seadistused leiate failist /etc/default/xrdp, samas kui kõik muud serveri konfiguratsioonifailid asuvad kataloogis /etc/xrdp. Peamised parameetrid asuvad failis xrdp.ini, mida ei ole vaja muuta. Konfiguratsioon on hästi dokumenteeritud, lisaks on kaasas vastavad manpages:
man xrdp.ini
man xrdpJäänud on ainult skripti /etc/xrdp/startwm.sh muutmine, mis käivitatakse kasutaja seansi initsialiseerimisel. Eelnevalt teeme skripti varukoopia distributiivist:
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.shTöölaua keskkonna käivitamiseks XFCE on vajalik skript, mille sisu on umbes järgmine:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4Pange tähele: skriptides on parem määrata täistee käivitatavatele failidele — see on hea harjumus. Teeme skripti käivitatavaks ja sellega on Xrdp serveri seadistamine lõpetatud:
sudo chmod 755 /etc/xrdp/startwm.shTaaskäivitame serveri:
sudo systemctl restart xrdp
Tulekahju tuvastamine
Vaikimisi kuulab Xrdp TCP-porti 3389 kõigil liidestel. Olenevalt virtuaalse serveri konfiguratsioonist võib olla vajalik Netfilteri tulemüüri seadistamine. Linuxis tehakse seda tavaliselt iptables'i utiliidiga, kuid Ubuntus on parem kasutada ufw-d. Kui kliendi IP-aadress on teada, saab seadistamise teha järgmise käsu abil:
sudo ufw allow from IP_Address to any port 3389Ühenduste lubamiseks mistahes IP-st saab teha järgmist:
sudo ufw allow 3389RDP-protokoll toetab krüpteerimist, kuid Xrdp-serveri avamine avalikele võrkudele on halb mõte. Kui kliendil ei ole staatilist IP-aadressi, peaks server kuulama ainult localhost'i, et suurendada turvalisust. Toodet on parem seadistada SSH-tunneli kaudu, mis suunab kliendi arvuti liikluse turvaliselt. Sarnast lähenemist oleme VNC-serveri jaoks.
Ühendamine RDP serveriga
Töölauakeskkonnaga töötamiseks on parem luua eraldi mitteprivilegeeritud kasutaja:
sudo adduser rdpuser 
Lisame kasutaja sudo rühma, et ta saaks hallata administraatoriga seotud ülesandeid. Kui sellist vajadust ei ole, võib selle sammu vahele jätta:
sudo gpasswd -a rdpuser sudoServerisse saab ühenduda mis tahes RDP kliendi abil, sealhulgas Windowsi kaugestöö klient. Kui Xrdp kuulab välisilti, siis ei ole lisategevusi vaja. Piisab, kui seadistustes näidata VPS-i IP-aadressi, kasutajanimetust ja parooli. Pärast ühenduse loomist näeme umbes sellist vaadet:

Pärast töölauakeskkonna esialgset seadistamist saame täieliku töölaua. Nagu näete, ei kasuta see liiga palju ressursse, kuigi edaspidi sõltub kõik kasutatavatest rakendustest.

Kui server Xrdp kuulab ainult localhosti, peab kliendikinos liiklus tunnelisse SSH pakendama (VPS-is peab tööle olema pandud sshd). Windowsis saab kasutada graafilist SSH klienti (näiteks PuTTY), UNIX-süsteemides on vajalik ssh utiliit:
ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ipPärast tunneli algatamist loob RDP klient ühenduse mitte kaugserveriga, vaid kohaliku hostiga.
Mobiilsete seadmetega on keerulisem: SSH tunnelit toetavad kliendid tuleb osta, lisaks on iOS-is ja iPadOS-is taustal töötavate kolmandate osapoolte rakenduste töö raskendatud suurepärase energiatõhususe tõttu. iPhone'is ja iPadis ei saa tunneli üles seada eraldi rakenduses — vajalik on rakendus-kombain, mis suudab ise RDP-ühendust SSH kaudu luua. Selline näiteks on .
Seansihaldur ja kasutaja seansid
Mitme kasutaja töövõime on otseselt implementeeritud Xrdp-serverisse ja ei vaja täiendavat seadistamist. Pärast teenuse käivitamist systemdi kaudu töötab üks protsess deemonirežiimis, kuulab porti 3389 ja suhtleb localhost'i kaudu istungihalduriga.
ps aux |grep xrdp 
sudo netstat -ap |grep xrdp 
Istungihaldur tavaliselt kasutajatele nähtav ei ole, kuna kliendi seadetes määratud sisselogimise ja parooli edastatakse automaatselt. Kui seda ei juhtunud või autentimise käigus tekkis viga, kuvatakse töölaua asemel interaktiivne sisselogimisaken.

Seansihalduri automaatne käivitamine on määratud failis /etc/default/xrdp ning konfiguratsioon asub failis /etc/xrdp/sesman.ini. Vaikimisi näeb see välja umbes nii:
[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
; Kui AlwaysGroupCheck=false, antakse ligipääs, kui TerminalServerUsers grupp ei ole määratud.
AlwaysGroupCheck=false
[Sessions]Siin ei ole vaja midagi muuta, piisab, kui keelata root-õigustega sisselogimine (AllowRootLogin=false). Iga süsteemi autoriseeritud kasutaja jaoks käivitub eraldi xrdp protsess: kui seansist lahkuda, jätkavad kasutajate protsessid vaikimisi töötamist ja seansile saab uuesti sisse logida. Seadeid saab muuta failis /etc/xrdp/sesman.ini (sektsioon [Sessions]).
Klaviatuuri paigutuste vahetamine
Kaheastmelise lõikeprobleeme tavaliselt ei esine, kuid vene klaviatuuripaigutuse osas peab natuke vaeva nägema (vene lokaal peab olema juba ). Redigeerime serveri Xrdp klaviatuuriseadeid:
sudo nano /etc/xrdp/xrdp_keyboard.iniKonfiguratsioonifaili lõppu tuleb lisada järgmised read:
[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,ruSalvestage fail ja taaskäivitage Xrdp:
sudo systemctl restart xrdpNagu näete, RDP serveri seadistamine Linuxi VPS-is ei ole keeruline, ja oleme juba arutanud VNC seadistamist. Lisaks nendele tehnoloogiatele on veel üks huvitav variant: X2Go süsteem, mis kasutab muudetud NX 3 protokolli. Sellesse me süveneme järgmises publikatsioonis.
Allikas: habr.com
