В megbeszéltük, hogy VNC-kiszolgálót futtassunk bármilyen típusú virtuális gépen. Ennek az opciónak számos hátránya van, amelyek közül a legfontosabb az adatátviteli csatornák átviteli sebességével szembeni magas követelmények. Ma megpróbálunk csatlakozni egy grafikus asztalhoz Linuxon RDP-n (Remote Desktop Protocol) keresztül. A VNC rendszer a pixeltömbök RFB (Remote Framebuffer) protokollt használó átvitelén alapul, az RDP pedig lehetővé teszi bonyolultabb grafikus primitívek és magas szintű parancsok küldését. Általában a távoli asztali szolgáltatások tárolására használják Windows rendszeren, de elérhetők Linux-kiszolgálók is.
Tartalomjegyzék:
Grafikus környezet telepítése
Vegyünk egy virtuális gépet Ubuntu Server 18.04 LTS-sel, két számítási maggal, négy gigabájt RAM-mal és egy húsz gigabájtos merevlemezzel (HDD). A gyengébb konfiguráció nem megfelelő grafikus asztalhoz, bár ez a megoldandó feladatoktól függ. Ne felejtse el használni a Habrahabr10 promóciós kódot, hogy 10% kedvezményt kapjon rendeléséből.

Az összes függőséggel rendelkező asztali környezet telepítése a következő paranccsal történik:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsAz előző esethez hasonlóan most is az XFCE-t választottuk annak viszonylag alacsony számítási erőforrásigénye miatt.
A szerver oroszosítása és a szoftvertelepítés
A virtuális gépeket gyakran csak angol lokalizációval telepítik. Az asztalon szükség lehet orosz nyelvre, amelyet könnyű beállítani. Először telepítsük a rendszerprogramok fordításait:
sudo apt-get install language-pack-ruÁllítsuk be a lokalizációt:
sudo update-locale LANG=ru_RU.UTF-8Ugyanez a hatás érhető el az /etc/default/locale manuális szerkesztésével.
A GNOME és a KDE honosításához a lerakat tartalmazza a language-pack-gnome-ru és a language-pack-kde-ru csomagokat – ezekre szükség lesz, ha ezekből az asztali környezetekből származó programokat használ. Az XFCE-ben a fordítások az alkalmazásokkal együtt vannak telepítve. Ezután telepítheti a szótárakat:
# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru
# Тезаурус для LibreOffice
sudo apt-get install mythes-ru
# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dictEzenkívül egyes alkalmazási programokhoz fordítások telepítése is szükséges lehet:
# Браузер 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-ruEzzel befejeződött az asztali környezet előkészítése, már csak az RDP szerver konfigurálása van hátra.
RDP szerver telepítése és konfigurálása
Az Ubuntu tárolókban van egy szabadon terjesztett Xrdp szerver, amelyet fogunk használni:
sudo apt-get install xrdpHa minden jól ment, a szervernek automatikusan el kell indulnia:
sudo systemctl status xrdp 
Az Xrdp szerver xrdp felhasználói jogokkal fut, és alapértelmezés szerint az /etc/ssl/private/ssl-cert-snakeoil.key tanúsítványt veszi át, amely lecserélhető a sajátjára. A fájl olvasásához való hozzáféréshez hozzá kell adnia a felhasználót az ssl-cert csoporthoz:
sudo adduser xrdp ssl-certAz alapértelmezett beállítások az /etc/default/xrdp fájlban találhatók, az összes többi szerverkonfigurációs fájl pedig az /etc/xrdp könyvtárban található. A fő paraméterek az xrdp.ini fájlban találhatók, amelyet nem kell módosítani. A konfiguráció jól dokumentált, és a megfelelő kézikönyvoldalak is megtalálhatók:
man xrdp.ini
man xrdpMár csak az /etc/xrdp/startwm.sh szkriptet kell szerkeszteni, amely a felhasználói munkamenet inicializálásakor kerül végrehajtásra. Először készítsünk biztonsági másolatot a terjesztésből származó szkriptről:
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.shAz XFCE asztali környezet elindításához valami ehhez hasonló szkriptre lesz szüksége:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4Kérjük, vegye figyelembe: szkriptekben jobb, ha a végrehajtható fájlok teljes elérési útját írják - ez egy jó szokás. Tegyük végrehajthatóvá a szkriptet, és ezen a ponton az Xrdp szerver beállítása befejezettnek tekinthető:
sudo chmod 755 /etc/xrdp/startwm.shIndítsa újra a szervert:
sudo systemctl restart xrdp
Tűzfal beállítása
Alapértelmezés szerint az Xrdp az összes interfészen a 3389-es TCP-portra figyel. A virtuális szerver konfigurációjától függően előfordulhat, hogy be kell állítania egy Netfilter tűzfalat. Linuxon ez általában az iptables segédprogrammal történik, de Ubuntuban jobb az ufw használata. Ha ismert a kliens IP-címe, a konfiguráció a következő paranccsal történik:
sudo ufw allow from IP_Address to any port 3389Bármilyen IP-ről engedélyezhet kapcsolatokat, például:
sudo ufw allow 3389Az RDP protokoll támogatja a titkosítást, de az Xrdp szerver nyilvános hálózatoknak való kitétele rossz ötlet. Ha a kliensnek nincs rögzített IP-címe, a kiszolgálónak csak a localhost-ra kell figyelnie a biztonság növelése érdekében. A legjobb, ha egy SSH-alagúton keresztül éri el, amely biztonságosan átirányítja a forgalmat az ügyfélszámítógépről. Nálunk is hasonló a megközelítés VNC szerverhez.
Csatlakozás egy RDP szerverhez
Az asztali környezettel való együttműködéshez jobb, ha külön jogosultság nélküli felhasználót hoz létre:
sudo adduser rdpuser 
Adjuk hozzá a felhasználót a sudo csoporthoz, hogy el tudja látni az adminisztrációval kapcsolatos feladatokat. Ha nincs ilyen igény, kihagyhatja ezt a lépést:
sudo gpasswd -a rdpuser sudoBármely RDP-ügyféllel csatlakozhat a kiszolgálóhoz, beleértve a beépített Windows Remote Desktop Services-ügyfelet is. Ha az Xrdp figyeli a külső interfészt, nincs szükség további műveletekre. Elegendő a VPS IP-címét, felhasználónevét és jelszavát megadni a csatlakozási beállításoknál. Csatlakozás után valami ilyesmit fogunk látni:

Az asztali környezet kezdeti beállítása után egy teljes értékű asztali gépet kapunk. Mint látható, nem sok erőforrást fogyaszt, bár minden a használt alkalmazásoktól függ.

Ha az Xrdp szerver csak a localhostra figyel, akkor az ügyfélszámítógép forgalmát egy SSH alagútba kell csomagolni (az sshd-nek futnia kell a VPS-en). Windows rendszeren használhat grafikus SSH-ügyfelet (például PuTTY), UNIX rendszereken pedig az ssh segédprogramra van szüksége:
ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ipAz alagút inicializálása után az RDP-kliens többé nem a távoli kiszolgálóhoz, hanem a helyi gazdagéphez csatlakozik.
Mobileszközökkel nehezebb a helyzet: alagút emelésre képes SSH klienseket kell vásárolni, iOS-ben és iPadOS-ben pedig az energiafogyasztás túl jó optimalizálása miatt a harmadik féltől származó alkalmazások háttérműködtetése is nehézkes. iPhone-on és iPaden nem lehet külön alkalmazásban alagutat létrehozni; szükség lesz egy betakarító alkalmazásra, amely maga is képes RDP-kapcsolatot létesíteni SSH-n keresztül. Ilyen például .
Munkamenetkezelő és felhasználói munkamenetek
A többfelhasználós munkavégzés lehetősége közvetlenül az Xrdp-kiszolgálón van megvalósítva, és nem igényel további konfigurációt. A szolgáltatás systemd-n keresztüli elindítása után az egyik folyamat démon módban fut, a 3389-es porton figyel, és a localhost-on keresztül kommunikál a munkamenet-kezelővel.
ps aux |grep xrdp 
sudo netstat -ap |grep xrdp 
A munkamenetkezelő általában nem látható a felhasználók számára, mert a kliens beállításaiban megadott bejelentkezési név és jelszó automatikusan átkerül rá. Ha ez nem történik meg, vagy hiba történik a hitelesítés során, akkor az asztal helyett egy interaktív bejelentkezési ablak jelenik meg.

A munkamenet-kezelő automatikus indítása az /etc/default/xrdp fájlban van megadva, a konfiguráció pedig az /etc/xrdp/sesman.ini fájlban található. Alapértelmezés szerint valahogy így néz ki:
[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]Itt nem kell semmit módosítani, csak le kell tiltani a root jogokkal való bejelentkezést (AllowRootLogin=false). A rendszerben feljogosított minden felhasználó esetében külön xrdp folyamat indul el: ha a munkamenet befejezése nélkül bontja le a kapcsolatot, a felhasználói folyamatok alapértelmezés szerint továbbra is futnak, és újra csatlakozhat a munkamenethez. A beállítások az /etc/xrdp/sesman.ini fájlban ([Sessions]) módosíthatók.
Billentyűzetkiosztás váltása
Általában nincs probléma a kétirányú vágólappal, de az orosz billentyűzetkiosztással kicsit játszadozni kell (az orosz nyelvi beállításnak már ). Szerkesszük az Xrdp szerver billentyűzet beállításait:
sudo nano /etc/xrdp/xrdp_keyboard.iniA következő sorokat kell hozzáadnia a konfigurációs fájl végéhez:
[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,ruMár csak a fájl mentése és az Xrdp újraindítása van hátra:
sudo systemctl restart xrdpAmint látja, nem nehéz beállítani egy RDP-kiszolgálót egy Linux VPS-en, de A VNC beállításáról már beszéltünk. Ezen technológiák mellett van még egy érdekes lehetőség: az X3Go rendszer egy módosított NX 2 protokollt használva. A következő kiadványban foglalkozunk vele.
Forrás: will.com
