A bejegyzésből megtudhatod, hogy hogyan telepíts- és konfigurálj gyorsan egy vnc szervert.
Bevezetés
A VNC (Virtual Network Computing), egy szerver-kliens protokoll, mely lehetővé teszi, hogy egy távoli gépen – fiókkal rendelkező felhasználók – kapcsolódni tudjanak a rendszerhez. Jelen esetben egy Debian11 alapon-, XFCE grafikus asztali felülettel rendelkező rendszerhez fogunk kialakítani távoli csatlakozási lehetőséget. A VNC megvalósítására a TightVNC alkalmazás szervert fogjuk használni, mely rendkívül sokoldalú. Ezt követően az RDP (Remote Desktop Protocol) telepítését nézzük meg, amely a Windows távoli asztali csatlakozását teszi lehetővé linux rendszerhez.
TightVNC telepítése
Az alábbi utasítással installáljuk fel az alkalmazást:
sudo apt install tightvncserver
A következő lépésben lépjünk át a terminálban annak a felhasználnak a jogosultságára, amelynek biztosítani kívánjuk a távoli elérést. Ezt követően a vncserver utasítással kezdjük el a konfigurálási folyamatot:
su - <vnc felhasználó> vncserver
Az alábbi kimenetet fogjuk látni, első lépésben bekéri a rendszer a kapcsolódáshoz szükséges jelszót:
You will require a password to access your desktops.
Password:
Verify:
A jelszónak hat- és nyolc karakter közötti hosszúságúnak kell lennie. A 8 karakternél hosszabb jelszavak automatikusan csonkolódnak.
Miután ellenőrizted a jelszót, lehetőséged lesz egy csak megtekintésre szóló jelszó létrehozására. A csak megtekintési jelszóval bejelentkező felhasználók nem tudják egerükkel- vagy billentyűzetükkel vezérelni a VNC-példányt, azonban látják a tevékenységedet. Ez egy nagyon hasznos lehetőség, ha szeretnél valamit bemutatni másoknak, a VNC-kiszolgáló használatával.
A folyamat ezután létrehozza a szükséges alapértelmezett konfigurációs fájlokat, és csatlakozási információkat a szerverhez:
Would you like to enter a view-only password (y/n)? n xauth: file /home/sammy/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log
A VNC szerver konfigurálása
A VNC-kiszolgálónak tudnia kell, hogy mely parancsokat kell végrehajtania, amikor elindul. Pontosabban, a VNC-nek tudnia kell, hogy melyik grafikus asztalhoz kell csatlakoznia.
Ezek a parancsok a saját könyvtárad alatti mappában található konfigurációs fájlban (xstartup) találhatóak, a .vnc rejtett könyvtárban. Az indítási szkript akkor jött létre, amikor az előző lépésben lefutott a vncserver utasítás. Az utasítás futtatásának másik következménye, hogy elindított egy kiszolgáló példányt, mely az 5901 porton érhető el. A kiszolgáló példánynak szintén van egy egyedi display portja, mely :1, vagy :2 stb. lehet, attól függően, hogy hány display példány fut, hány felhasználót szolgál ki az alkalmazás, az 5901 porton keresztül.
Mivel módosítani fogjuk a VNC-kiszolgáló konfigurációját, először állítsuk le a porton futó VNC-kiszolgálópéldányt:
vncserver -kill :1
A kimenetnek így kell kinéznie, bár más PID-t fog látni:
Output Killing Xtightvnc process ID 17648
A xstartup fájl módosítása előtt készítsen biztonsági másolatot az eredetiről:
cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
Nyissuk meg az xstartup fájlt, a nano szövegszerkesztővel:
nano ~/.vnc/xstartup
Az ebben a fájlban található parancsok automatikusan végrehajtásra kerülnek, amikor elindítjuk- vagy újraindítjuk a VNC-kiszolgálót. Adjuk hozzá a startxfce4 parancsot a fájl végéhez. Természetesen azt feltételezem, hogy a Debian rendszered grafikus felülete neked is XFCE:
#!/bin/sh xrdb "$HOME/.Xresources" xsetroot -solid grey export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession startxfce4 &
Most indítsa újra a VNC-kiszolgálót:
vncserver
Ehhez hasonló kimenetet fogunk látni:
Output New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log
Ha a konfiguráció megvan, akkor már csatlakozhatunk is a szerverhez.
Automatizált Indítás
Jelenleg egy újraindítás után a vnc szerver nem fog automatikusan elindulni, a felhasználó jogosultságával kell indítani egy terminált és ott kiadni a vncserver utasítást. Ez nem túl kényelmes, ezért indítsuk el szolgáltatásként a rendszer indulásával együtt. Hozzuk létre a megfelelő állományt:
nano /etc/systemd/system/vncserver.service
Illesszük be az alábbi tartalmat:
[Unit] Description=TightVNC server After=syslog.target network.target [Service] Type=forking User=berti PAMName=login PIDFile=/berti/.vnc/%H:1.pid ExecStartPre=-/usr/bin/vncserver -kill :1 > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -geometry 1366x768 ExecStop=/usr/bin/vncserver -kill :1 [Install] WantedBy=multi-user.target
A piros színnel kiemelt részeket módosítsuk a saját jellemzőinknek megfelelően. A -geometry 1366×768 azt jelenti, hogy teljes képernyő esetén erre a méretre optimalizál a vnc szerver. Ezt megint csak a saját kliens megjelenítőnkre optimalizáljuk.
Tájékoztassuk a rendszert a változásokról:
sudo systemctl daemon-reload
Engedélyezzük a szolgáltatást:
sudo systemctl enable vncserver.service
A szolgáltatás indítása előtt – ha fut – állítsuk le a szolgáltatást:
vncserver -kill :1
Majd indítsuk el a szolgáltatást:
systemctl start vncserver.service
MultiUser
Kiegészítésként annyit, hogy amennyiben több felhasználó részére is biztosítunk vnc szolgáltatást, akkor a leíró fájl neve legyen vncserver@1.service. Ezzel paraméterátadást tudunk elérni, az 1 értéke környezeti változóként kerül átadásra. A fenti fájlban az 1-esek helyére „%i„-t írva a „%i” helyére a változó értéke kerül átadásra. Így a display pid-ek értékeinek megfelelően, több szolgáltatás leíró állományt tudunk létrehozni. Ez esetben így nézne ki a tartalmom:
[Unit] Description=TightVNC server After=syslog.target network.target [Service] Type=forking User=berti PAMName=login PIDFile=/berti/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -geometry 1366x768 ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
Biztonságos elérés
Amennyiben titkosított csatornán keresztül szeretnénk csatlakozni, használjuk az ssh tunneling technikát:
ssh -L 5901:127.0.0.1:5901 -C -N -l berti <szerver ip>
Így a vnc kliensprogramban a: localhost:5901 címen érhetjük el biztonságos csatornán a szolgáltatást. Tulajdonképpen itt végeztünk is, a szoftvernek Windows-os verziója is elérhető, erről további információ itt található.
RDP Telepítés
Adjuk ki konzolban az alábbi parancsot:
apt install xrdp
Alapértelmezés szerint az Xrdp azt a /etc/ssl/private/ssl-cert-snakeoil.key fájlt használja , amelyet csak az „ssl-cert” csoport tagjai olvashatnak. Adjuk hozzá az xrdp felhasználót a ssl-cert csoporthoz, hogy titkos csatornán történjen a kommunikáció:
adduser xrdp ssl-cert
Szerkesszük az alábbi fájlt:
nano /etc/xrdp/xrdp.ini
Módosítsuk az alábbi jellemzőt:
new_cursors=false
Lépjünk át annak a felhasználónak a konzol felületére, akinek az asztalához csatlakozni kívánunk:
su - <felhasználói név>
Hozzuk létre az alábbi konfigurációs állományt:
vi ~/.xsession
Illesszük be az alábbi tartalmat:
xfce4-session export XDG_SESSION_DESKTOP=xubuntu export XDG_DATA_DIRS=/usr/share/xfce4:/usr/local/share:/usr/share:/var/lib/snapd/desktop:/usr/share export XDG_CONFIG_DIRS=/etc/xdg/xfce4:/etc/xdg:/etc/xdg
Indítsuk el a szolgáltatást:
systemctl enable xrdp systemctl restart xrdp
Készen is vagyunk, indítsuk újra a rendszert és teszteljük a munkánkat.