В Oleme arutanud, kuidas käivitada VNC-serverit mis tahes tüüpi virtuaalmasinal. Sellel valikul on palju puudusi, millest peamine on andmeedastuskanalite suur ribalaiuse nõue. Täna proovime luua ühenduse Linuxi graafilise töölauaga RDP (Remote Desktop Protocol) kaudu. VNC-süsteem põhineb piksli massiivide edastamisel RFB (Remote Framebuffer) protokolli kaudu ja RDP võimaldab saata keerukamaid graafilisi primitiive ja kõrgetasemelisi käske. Tavaliselt kasutatakse seda Windowsi kaugtöölaua teenuste korraldamiseks, kuid saadaval on ka Linuxi serverid.
Оглавление
Graafilise keskkonna installimine
Võtame virtuaalmasina Ubuntu Server 18.04 LTS-iga, millel on kaks arvutustuuma, neli gigabaiti muutmälu ja kahekümne gigabaidine kõvaketas (HDD). Nõrgem konfiguratsioon ei sobi graafilisele töölauale, kuigi see sõltub lahendatavatest ülesannetest. Ärge unustage tellimuse esitamisel kasutada sooduskoodi Habrahabr10, et saada 10% allahindlust.

Kõigi sõltuvustega töölauakeskkonna installimine toimub järgmise käsuga:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsNagu eelmisel juhul, valisime XFCE selle suhteliselt madalate arvutusnõuete tõttu.
Serveri venestamine ja tarkvara installeerimine
Virtuaalmasinaid juurutatakse sageli ainult ingliskeelse lokaliseerimisega. Töölaual võib vaja minna vene keelt, mida on lihtne seadistada. Kõigepealt installime süsteemiprogrammide tõlked:
sudo apt-get install language-pack-ruSeadistame lokaliseerimise:
sudo update-locale LANG=ru_RU.UTF-8Sama efekti saab saavutada faili /etc/default/locale käsitsi redigeerimisega.
GNOME ja KDE lokaliseerimiseks on hoidlas paketid language-pack-gnome-ru ja language-pack-kde-ru – neid läheb vaja, kui kasutate nende töölauakeskkondade programme. XFCE-s installitakse tõlked koos rakendustega. Järgmisena saate installida sõnastikud:
# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru
# Тезаурус для LibreOffice
sudo apt-get install mythes-ru
# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dictLisaks võib mõne rakendusprogrammi jaoks olla vajalik tõlgete installimine:
# Браузер 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-ruSee lõpetab töölauakeskkonna ettevalmistamise, jääb üle vaid RDP-serveri konfigureerimine.
RDP-serveri installimine ja konfigureerimine
Ubuntu repositooriumides on vabalt levitatav Xrdp server, mida me kasutame:
sudo apt-get install xrdpKui kõik läks hästi, peaks server automaatselt käivituma:
sudo systemctl status xrdp 
Xrdp server töötab xrdp kasutajaõigustega ja vaikimisi kasutab see sertifikaati /etc/ssl/private/ssl-cert-snakeoil.key, mille saab asendada teie enda sertifikaadiga. Failile juurdepääsuks peate kasutaja lisama ssl-cert gruppi:
sudo adduser xrdp ssl-certVaikimisi sätted asuvad failis /etc/default/xrdp ja kõik muud serveri konfiguratsioonifailid asuvad kataloogis /etc/xrdp. Peamised parameetrid asuvad failis xrdp.ini, mida pole vaja muuta. Konfiguratsioon on hästi dokumenteeritud ja vastavad man-lehed on lisatud:
man xrdp.ini
man xrdpJääb üle vaid muuta skripti /etc/xrdp/startwm.sh, mis käivitatakse kasutaja seansi initsialiseerimisel. Teeme eelnevalt skriptist varukoopia levitatavast paketilt:
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.shXFCE töölauakeskkonna käivitamiseks vajate skripti, mis näeb välja umbes selline:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4Pane tähele: skriptidesse on parem kirjutada käivitatavate failide täielik tee – see on hea harjumus. Teeme skripti käivitatavaks ja see viib Xrdp serveri seadistamise lõpule:
sudo chmod 755 /etc/xrdp/startwm.shTaaskäivitage server:
sudo systemctl restart xrdp
Tulemüüri seadistamine
Vaikimisi kuulab Xrdp kõigil liidestel TCP-porti 3389. Sõltuvalt virtuaalserveri konfiguratsioonist peate võib-olla konfigureerima Netfilteri tulemüüri. Linuxis tehakse seda tavaliselt iptables'i utiliidi abil, kuid Ubuntus on parem kasutada ufw-d. Kui kliendi IP-aadress on teada, tehakse konfigureerimine järgmise käsuga:
sudo ufw allow from IP_Address to any port 3389Saate lubada ühendusi mis tahes IP-aadressilt, näiteks nii:
sudo ufw allow 3389RDP protokoll toetab krüpteerimist, kuid avalikest võrkudest Xrdp serverile juurdepääsu avamine on halb mõte. Kui kliendil pole fikseeritud IP-aadressi, peaks server turvalisuse suurendamiseks kuulama ainult localhosti. Parem on konfigureerida juurdepääs sellele SSH-tunneli kaudu, mis suunab liikluse turvaliselt kliendiarvutist ümber. Meil on sarnane lähenemisviis. VNC serveri jaoks.
Ühenduse loomine RDP-serveriga
Töölauakeskkonnaga töötamiseks on parem luua eraldi privilegeerimata kasutaja:
sudo adduser rdpuser 
Lisame kasutaja sudo gruppi, et ta saaks täita administreerimisega seotud ülesandeid. Kui sellist vajadust pole, võite selle sammu vahele jätta:
sudo gpasswd -a rdpuser sudoServeriga saab ühenduse luua mis tahes RDP-kliendi, sealhulgas sisseehitatud Windows Remote Desktop Service'i kliendi abil. Kui Xrdp kuulab välist liidest, pole täiendavaid samme vaja. Piisab VPS-i IP-aadressi, kasutajanime ja parooli määramisest ühenduse seadetes. Pärast ühenduse loomist näeme midagi sellist:

Pärast töölaua keskkonna esmast seadistamist saame täisväärtusliku töölaua. Nagu näete, ei tarbi see palju ressursse, kuigi edasi sõltub kõik kasutatavatest rakendustest.

Kui Xrdp-server kuulab ainult localhost'i, tuleb kliendiarvuti liiklus pakkida SSH-tunnelisse (sshd peab VPS-il töötama). Windowsi all saab kasutada graafilist SSH-klienti (näiteks PuTTY) ja UNIX-süsteemides on vaja ssh-utiliiti:
ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ipPärast tunneli initsialiseerimist ei loo RDP klient enam ühendust kaugserveriga, vaid kohaliku hostiga.
Mobiilseadmetega on keerulisem: peate ostma SSH-kliendid, mis suudavad tunneli luua, ning iOS-is ja iPadOS-is on kolmandate osapoolte rakenduste taustatöö keeruline liiga hea energiatarbimise optimeerimise tõttu. iPhone'is ja iPadis ei saa te tunnelit eraldi rakenduses seadistada - vajate kombineeritud rakendust, mis suudab ise SSH kaudu RDP-ühenduse luua. Näiteks .
Seansihaldur ja kasutajaseansid
Mitme kasutaja funktsioon on rakendatud otse Xrdp serveris ja ei vaja täiendavat konfigureerimist. Pärast teenuse käivitamist systemd kaudu töötab üks protsess deemonirežiimis, kuulab porti 3389 ja suhtleb seansihalduriga localhosti kaudu.
ps aux |grep xrdp 
sudo netstat -ap |grep xrdp 
Seansihaldur pole kasutajatele tavaliselt nähtav, kuna kliendi seadetes määratud sisselogimisnimi ja parool edastatakse sinna automaatselt. Kui seda ei juhtu või autentimise ajal ilmneb tõrge, kuvatakse töölaua asemel interaktiivne sisselogimisaken.

Seansihalduri automaatne käivitamine on määratud failis /etc/default/xrdp ja konfiguratsioon on salvestatud faili /etc/xrdp/sesman.ini. Vaikimisi näeb see välja umbes selline:
[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]Siin pole vaja midagi muuta, tuleb lihtsalt keelata root'i sisselogimine (AllowRootLogin=false). Iga süsteemi sisselogitud kasutaja jaoks käivitatakse eraldi xrdp protsess: kui katkestate ühenduse seanssi lõpetamata, jätkavad kasutajaprotsessid vaikimisi tööd ja saate seansiga uuesti ühenduse luua. Seadistusi saab muuta failis /etc/xrdp/sesman.ini (jaotis [Sessions]).
Klaviatuuripaigutuste vahetamine
Tavaliselt pole kahesuunalise lõikelauaga probleeme, aga vene klaviatuuripaigutusega tuleb natuke maagiat teha (vene keel peaks juba olemas olema). ). Muudame Xrdp-serveri klaviatuuri sätteid:
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,ruJääb üle vaid fail salvestada ja Xrdp taaskäivitada:
sudo systemctl restart xrdpNagu näete, pole RDP-serveri seadistamine Linux VPS-il keeruline ja ... VNC seadistust oleme juba arutanud. Lisaks neile tehnoloogiatele on veel üks huvitav variant: X3Go süsteem, mis kasutab modifitseeritud NX 2 protokolli. Vaatleme seda järgmises väljaandes.
Allikas: www.habr.com
