Egyes felhasználók viszonylag olcsó VPS-t bérelnek Windows rendszerrel a távoli asztali szolgáltatások futtatásához. Ugyanez megtehető Linuxon anélkül, hogy saját hardvert tárolna egy adatközpontban, vagy dedikált szervert bérelne. Vannak, akiknek ismerős grafikus környezetre van szükségük teszteléshez és fejlesztéshez, vagy távoli asztalra széles csatornával a mobileszközökről történő munkavégzéshez. A Remote FrameBuffer (RFB) protokoll alapú virtuális hálózati számítástechnikai (VNC) rendszer használatára számos lehetőség kínálkozik. Ebben a rövid cikkben elmondjuk, hogyan konfigurálhatja azt egy virtuális gépen bármilyen hipervizorral.
Tartalomjegyzék:
VNC szerver kiválasztása
A VNC szolgáltatás beépíthető a virtualizációs rendszerbe, és a hypervisor összekapcsolja az emulált eszközökkel, és nincs szükség további konfigurációra. Ez a lehetőség jelentős többletköltséggel jár, és nem minden szolgáltató támogatja – még egy kevésbé erőforrás-igényes megvalósítás esetén is, amikor a valódi grafikus eszköz emulálása helyett egy egyszerűsített absztrakció (framebuffer) kerül átvitelre a virtuális gépre. Előfordul, hogy egy VNC szerver egy futó X szerverhez van kötve, de ez a módszer alkalmasabb fizikai gép elérésére, virtuálison pedig számos technikai nehézséget okoz. A VNC szerver telepítésének legegyszerűbb módja a beépített X szerver. Nem igényel fizikai eszközöket (videoadapter, billentyűzet és egér) vagy azok hipervizorral történő emulációját, ezért bármilyen típusú VPS-hez alkalmas.
Telepítés és konfigurálás
Szükségünk lesz egy virtuális gépre, amelynek alapértelmezett konfigurációja az Ubuntu Server 18.04 LTS. Számos VNC-kiszolgáló található a disztribúció szabványos tárolóiban:
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-utils
Ezután telepítenie kell a VNC-kiszolgálót:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Superuserként futtatni rossz ötlet. Hozzon létre egy felhasználót és csoportot:
sudo adduser vnc
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 vnc sudo
A következő lépés a VNC-kiszolgáló futtatása vnc felhasználói jogosultságokkal, hogy biztonságos jelszót és konfigurációs fájlokat hozzon létre a ~/.vnc/ könyvtárban. A jelszó hossza 6-8 karakter lehet (a további karakterek le vannak vágva). Szükség esetén jelszót is beállítunk a csak megtekintéshez, pl. billentyűzet és egér hozzáférése nélkül. A következő parancsok futnak le vnc felhasználóként:
su - vnc
vncserver -localhost no
Az RFB protokoll alapértelmezés szerint az 5900-tól 5906-ig terjedő TCP porttartományt használja – ez az ún. kijelző portok, amelyek mindegyike egy X szerver képernyőjének felel meg. Ebben az esetben a portok :0 és :6 közötti képernyőkkel vannak társítva. Az általunk elindított VNC-kiszolgálópéldány az 5901-es portot figyeli (képernyő: 1). Más példányok más portokon is működhetnek :2, :3 stb. képernyővel. A további konfigurálás előtt le kell állítania a szervert:
vncserver -kill :1
A parancsnak valami ilyesmit kell megjelenítenie: „Killing Xtigervnc process ID 18105... success!”
Amikor a TigerVNC elindul, a ~/.vnc/xstartup parancsfájlt futtatja a konfigurációs beállítások konfigurálásához. Hozzuk létre saját szkriptünket, először mentsük el a meglévő biztonsági másolatát, ha létezik:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
Az XFCE asztali környezet munkamenetét a következő xstartup szkript indítja el:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
Az xrdb parancs szükséges ahhoz, hogy a VNC beolvassa az .Xresources fájlt a saját könyvtárban. Itt a felhasználó különféle grafikus asztali beállításokat határozhat meg: betűkészlet-megjelenítés, terminálszínek, kurzortémák stb. A szkriptet futtathatóvá kell tenni:
chmod 755 ~/.vnc/xstartup
Ezzel befejeződik a VNC-kiszolgáló beállítása. Ha a vncserver -localhost no paranccsal futtatja (mint vnc felhasználó), akkor a korábban megadott jelszóval csatlakozhat, és a következő képet láthatja:
Szolgáltatás indítása a systemd-n keresztül
A VNC szerver kézi indítása nem alkalmas harci használatra, ezért rendszerszolgáltatást fogunk konfigurálni. A parancsok rootként futnak (sudo-t használunk). Először is hozzunk létre egy új egységfájlt a szerverünkhöz:
sudo nano /etc/systemd/system/[email protected]
A névben található @ szimbólum lehetővé teszi, hogy argumentumot adjon át a szolgáltatás konfigurálásához. Esetünkben a VNC megjelenítési portját határozza meg. Az egységfájl több részből áll:
[Unit]
Description=TigerVNC server
After=syslog.target network.target
[Service]
Type=simple
User=vnc
Group=vnc
WorkingDirectory=/home/vnc
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Ezután értesítenie kell a systemd-t az új fájlról, és aktiválnia kell:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
A névben szereplő 1-es szám határozza meg a képernyő számát.
Állítsa le a VNC szervert, indítsa el szolgáltatásként, és ellenőrizze az állapotot:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Ha a szolgáltatás fut, valami ilyesmit kell kapnunk.
Asztali kapcsolat
Konfigurációnk nem használ titkosítást, így a hálózati csomagokat elfoghatják a támadók. Ráadásul a VNC szervereken elég gyakran
sudo netstat -ap |more
Linuxban, FreeBSD-ben, OS X-ben és más UNIX-szerű operációs rendszerekben az ügyfélszámítógépről alagút jön létre az ssh segédprogrammal (az sshd-nek futnia kell a VNC-kiszolgálón):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
Az -L opció a távoli kapcsolat 5901-es portját a localhost 5901-es portjához köti. A -C opció engedélyezi a tömörítést, az -N pedig azt mondja az ssh-nak, hogy ne hajtsa végre a távoli parancsot. Az -l kapcsoló megadja a bejelentkezést a távoli bejelentkezéshez.
Az alagút helyi számítógépen történő beállítása után el kell indítania a VNC-ügyfelet, és kapcsolatot kell létesítenie a 127.0.0.1:5901 (localhost:5901) gazdagéppel, a korábban megadott jelszó használatával a VNC-kiszolgáló eléréséhez. Most már biztonságosan kommunikálhatunk egy titkosított alagúton keresztül a VPS-en lévő XFCE grafikus asztali környezettel. A képernyőképen a felső segédprogram fut a terminálemulátorban, amely megmutatja a virtuális gép alacsony számítási erőforrás-felhasználását. Ezután minden a felhasználói alkalmazásoktól függ.
VNC-kiszolgálót telepíthet és konfigurálhat Linux alatt szinte bármilyen VPS-en. Ez nem igényel drága és erőforrás-igényes konfigurációkat videoadapter emulációval vagy kereskedelmi szoftverlicencek vásárlását. Az általunk fontolóra vett rendszerszolgáltatási opción kívül vannak továbbiak is: indítás démon módban (az /etc/rc.local-on keresztül), amikor a rendszer elindul, vagy igény szerint az inetd-n keresztül. Ez utóbbi érdekes többfelhasználós konfigurációk létrehozásához. Az Internet Superserver elindítja a VNC szervert és csatlakoztatja hozzá a klienst, a VNC szerver pedig új képernyőt hoz létre és elindítja a munkamenetet. Azon belüli hitelesítéshez használhat egy grafikus megjelenítéskezelőt (pl.
Forrás: will.com