Kulcsszavak: Linux, VNC server, Ubuntu 22.04, Ubuntu 20.04, VPS
Az alábbi leírás egy VNC szerver telepítését fogja bemutatni. Az operációs rendszer Ubuntu 22.04 vagy Ubuntu 20.04 lehet. Mindkét rendszeren ugyanazokkal a parancsokkal tudjuk elvégezni a telepítést.
A VNC (virtual network computing) server egy távoli asztal elérést biztosító szoftver. Előszeretettel használatos olyan Linux szervereknél és VPS-nél, amelyeken grafikus asztali környezet is van telepítve.
Linux rendszereken számos asztali környezet telepíthető, amiket VNC kiszolgálóval távolról is elérhetővé lehet tenni. A következő leírásban csak három ilyen asztali környezet telepítésének és beállításának a menetét vesszük végig. Ez a három grafikus környezet a legkevésbé erőforrás igényes, így alapszintű VPS kiszolgálókon is jó teljesítménnyel használható.
A telepítéshez szükséges a rendszergazdai jogok megléte és SSH-n vagy a VPS konzolon való bejelentkezés.
1. XFCE4 telepítése, beállítása
Az XFCE4 asztali környezet a legelterjedtebb a VNC protokollon keresztül történő távoli elérésű kiszolgálóknál. Minimális erőforrásigény és jó testreszabhatóság jellemzi. Memória igénye: 150-350MB
Asztali környezet és a VNC server telepítése:
sudo apt install xfce4 xfce4-goodies tightvncserver
Állítsuk be a belépési jelszót a következő paranccsal. A jelszót kétszer kell megadni. Majd rákérdez a beállító a csak betekintésre használatos jelszó beállításáról (Would you like to enter a view-only password (y/n)?), amire az “n” gomb megnyomásával válaszoljunk nemmel.
vncpasswd
A sikeres jelszó beállítás után indítsuk el, majd állítsuk le a VNC szervert:
vncserver
vncserver -kill :1
Nyissuk meg szerkesztésre a felhasználónk (a példában “user”) mappájában található konfigurációs fájlt:
/home/user/.vnc/xstartup
Töröljünk ki belőle mindent és illesszük be ezt:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
A grafikus felület felbontásának beállításához és a port megváltoztatásához nyissuk meg szerkesztésre a VNC szerver konfigurációs fájlját:
/usr/bin/@vncserver
Keressük a következő szekciókat és változtassuk igény szerint:
...
$geometry = “1280x1024”;
...
$vncPort = 5900 +
A tűzfalon nyissuk meg a használni kívánt portokat. Biztonsági okokból érdemes a portot megváltoztatni. A használni kívánt port esetünkben az 5900+1, tehát 5901. Ha másik felhasználó alatt is indítunk egy VNC szervert, akkor ott a port már 5900+2 lesz, tehát 5902. Például UFW tűzfalon ezt a parancsot adjuk ki:
sudo ufw allow 5901/tcp
A sikeres beállítás után elindíthatjuk a VNC kiszolgálót a következő paranccsal:
vncserver
Így már távolról csatlakozhatunk a szerverünkre bármilyen VNC klienssel.
2. MATE telepítése, beállítása
A MATE asztali környezet közepes erőforrás igényű, de nagyon jól konfigurálható felületet biztosít. Memória igénye 500-700MB.
Asztali környezet és a VNC server telepítése:
sudo apt install ubuntu-mate-desktop tightvncserver
Állítsuk be a belépési jelszót a következő paranccsal. A jelszót kétszer kell megadni. Majd rákérdez a beállító a csak betekintésre használatos jelszó beállításáról (Would you like to enter a view-only password (y/n)?), amire az “n” gomb megnyomásával válaszoljunk nemmel.
vncpasswd
A sikeres jelszó beállítás után indítsuk el, majd állítsuk le a VNC szervert:
vncserver
vncserver -kill :1
Nyissuk meg szerkesztésre a felhasználónk (a példában “user”) mappájában található konfigurációs fájlt:
/home/user/.vnc/xstartup
Töröljünk ki belőle mindent és illesszük be ezt:
#!/bin/sh
# Start up the standard system desktop
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
/usr/bin/mate-session
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
x-window-manager &
A grafikus felület felbontásának beállításához és a port megváltoztatásához nyissuk meg szerkesztésre a VNC szerver konfigurációs fájlját:
/usr/bin/@vncserver
Keressük a következő szekciókat és változtassuk igény szerint:
...
$geometry = “1280x1024”;
...
$vncPort = 5900 +
A tűzfalon nyissuk meg a használni kívánt portokat. Biztonsági okokból érdemes a portot megváltoztatni. A használni kívánt port esetünkben az 5900+1, tehát 5901. Ha másik felhasználó alatt is indítunk egy VNC szervert, akkor ott a port már 5900+2 lesz, tehát 5902. Például UFW tűzfalon ezt a parancsot adjuk ki:
sudo ufw allow 5901/tcp
A sikeres beállítás után elindíthatjuk a VNC kiszolgálót a következő paranccsal:
vncserver
Így már távolról csatlakozhatunk a szerverünkre bármilyen VNC klienssel.
3. LXDE telepítése, beállítása
Az LXDE asztali környezet alacsony erőforrás igényű és jól konfigurálható felületet biztosít. Memória igénye 150-350MB.
Asztali környezet és a VNC server telepítése:
sudo apt-get install lxde-core tightvncserver
Állítsuk be a belépési jelszót a következő paranccsal. A jelszót kétszer kell megadni. Majd rákérdez a beállító a csak betekintésre használatos jelszó beállításáról (Would you like to enter a view-only password (y/n)?), amire az “n” gomb megnyomásával válaszoljunk nemmel.
vncpasswd
A sikeres jelszó beállítás után indítsuk el, majd állítsuk le a VNC szervert:
vncserver
vncserver -kill :1
Nyissuk meg szerkesztésre a felhasználónk (a példában “user”) mappájában található konfigurációs fájlt:
/home/user/.vnc/xstartup
Töröljünk ki belőle mindent és illesszük be ezt:
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
lxterminal &
/usr/bin/lxsession -s LXDE &
A grafikus felület felbontásának beállításához és a port megváltoztatásához nyissuk meg szerkesztésre a VNC szerver konfigurációs fájlját:
/usr/bin/@vncserver
Keressük a következő szekciókat és változtassuk igény szerint:
...
$geometry = “1280x1024”;
...
$vncPort = 5900 +
A tűzfalon nyissuk meg a használni kívánt portokat. Biztonsági okokból érdemes a portot megváltoztatni. A használni kívánt port esetünkben az 5900+1, tehát 5901. Ha másik felhasználó alatt is indítunk egy VNC szervert, akkor ott a port már 5900+2 lesz, tehát 5902. Például UFW tűzfalon ezt a parancsot adjuk ki:
sudo ufw allow 5901/tcp
A sikeres beállítás után elindíthatjuk a VNC kiszolgálót a következő paranccsal:
vncserver
Így már távolról csatlakozhatunk a szerverünkre bármilyen VNC klienssel.
4. VNC szerver futtatása szolgáltatásként.
Az előző pontokban feltelepített és beállított VNC szerver nem indul el a rendszer indításakor. Amennyiben szeretnénk rendszer szintű szolgáltatásként (system service) futtatni a VNC kiszolgálót, a következő lépéseket hajtsuk végre:
Root jogokkal hozzunk létre egy szolgáltatás indító fájlt a következő paranccsal:
sudo touch /etc/systemd/system/vncserver@.service
Majd nyissuk meg szerkesztésre a létrehozott fájlt és másoljuk be a következő kódot:
A “user” felhasználónevet cseréljük ki az általunk használt felhasználónévre. A “-localhost” kapcsolót vegyü ki, amennyiben nem használunk SSH tunneling-et.
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=user
Group=user
WorkingDirectory=/home/user
PIDFile=/home/user/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x1024 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
A fájl mentése után adjuk ki a következő parancsokat a szolgáltatás bekapcsolásához:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service
vncserver -kill :1
sudo systemctl start vncserver@1
5. SSH tunneling
A VNC protokoll alapból nem használ titkosítást. Emiatt egy támadó könnyedén megfigyelheti a távoli asztal elérésünket, majd átveheti a távoli gép felett az irányítást. Titkosított kapcsolódást az SSH tunneling megoldással lehet létrehozni. A biztonság növelése érdekében a 4. pontban létrehozott “vncserver@.service” fájlba a jelölt helyen legyen jelen a “-localhost” kapcsoló. Ez a kapcsoló arra utasítja a VNC szervert, hogy csak a localhostról érkező kapcsolatokat fogadja. A tűzfalon be is zárhatjuk a VNC szerver üzemi portját, ami alap esetben és ebben a példában is az 5901-es port. A szerver beállítása után indítsuk újra a kiszolgálót, hogy minden módosítás érvénybe lépjen.
5.1 SSH tunneling beállítása Ubuntu rendszeren.
A helyi számítógépen, amiről csatlakozni fogunk a távoli VNC szerverünkhöz, nyissunk meg egy terminált és adjuk ki a következő parancsot. A “user” a távoli szerver felhasználója, amit helyettesítsünk be az általunk használt névvel. Az IP címet is írjuk át a saját szerverünk IP címére vagy domain nevére.
ssh -p 22 -L 59000:localhost:5901 -C -N -l user 192.168.0.120
Ezzel a paranccsal létrehoztunk egy titkosított csatornát a saját gépünk és a távoli kiszolgáló között. Így már nem tudják lehallgatni a két gép közötti kommunikációt.
A VNC kliensünkben (például KRDC) a következő paranccsal tudunk csatlakozni a VNC szerverhez:
localhost:59000
vagy
vnc://localhost:59000
5.1 SSH tunneling beállítása Windows rendszeren.
Telepítsük fel a Putty programot. Majd indítsuk el és az alábbi kép szerint adjuk hozzá a szükséges tunnel beállítást.
Következő lépésként a “Session” rész alatt a kép szerint állítsuk be a szerver IP címét és az SSH portját, ami alaphelyzetben a 22-es.
A “Saved Sessions” szekcióban elmenthetjük a beállításokat, hogy máskor ne kelljen újra beírogatni.
Ha végeztünk a beállításokkal, nyomjunk rá az “Open” gombra. Ekkor megnyílik egy terminál ablak, ahol a szerver felhasználó nevét, majd jelszavát kell megadnunk. Sikeres bejelentkezés után nyissuk meg a VNC klienst, például: VNC Viewer. A terminál ablakot ne zárjuk be, amíg a kapcsolatot fenn akarjuk tartani.
A VNC szerver címéhez ezt adjuk meg:
localhost:59000
Bizonyos kliensek figyelmeztetést írhatnak ki, miszerint nem titkosított a kapcsolatunk. Ezzel nem kell törődni, mivel az Interneten már biztonságosan, titkosítva folyik a kommunikáció az SSH tunneling-nek köszönhetően.
A következő lépésben adjuk meg a belépési jelszót és már lehet is dolgozni a távoli kiszolgálón.