Nekateri uporabniki najamejo razmeroma poceni VPS z operacijskim sistemom Windows za izvajanje storitev oddaljenega namizja. Enako lahko storite na Linuxu, ne da bi gostili lastno strojno opremo v podatkovnem centru ali najeli namenski strežnik. Nekateri potrebujejo znano grafično okolje za testiranje in razvoj ali oddaljeno namizje s širokim kanalom za delo iz mobilnih naprav. Obstaja veliko možnosti za uporabo sistema virtualnega omrežnega računalništva (VNC), ki temelji na protokolu Remote FrameBuffer (RFB). V tem kratkem članku vam bomo povedali, kako ga konfigurirati na virtualnem računalniku s katerim koli hipervizorjem.
Kazalo:
Izbira strežnika VNC
Storitev VNC je mogoče vgraditi v virtualizacijski sistem, hipervizor pa jo bo povezal z emuliranimi napravami in dodatna konfiguracija ne bo potrebna. Ta možnost vključuje precejšnje stroške in je ne podpirajo vsi ponudniki – tudi pri implementaciji, ki zahteva manj virov, ko se namesto posnemanja prave grafične naprave v virtualni stroj prenese poenostavljena abstrakcija (framebuffer). Včasih je strežnik VNC vezan na delujoči strežnik X, vendar je ta način bolj primeren za dostop do fizičnega stroja, na virtualnem pa povzroča številne tehnične težave. Najlažji način za namestitev strežnika VNC je z vgrajenim strežnikom X. Ne zahteva fizičnih naprav (video adapterja, tipkovnice in miške) ali njihove emulacije s hipervizorjem, zato je primeren za vse vrste VPS.
Namestitev in konfiguracija
Potrebovali bomo virtualni stroj z Ubuntu Server 18.04 LTS v privzeti konfiguraciji. V standardnih repozitorijih te distribucije je več strežnikov VNC:
Namestitev namiznega okolja z vsemi odvisnostmi se izvede z naslednjim ukazom:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Nato morate namestiti strežnik VNC:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Zagon kot superuporabnik je slaba ideja. Ustvarite uporabnika in skupino:
sudo adduser vnc
Dodajmo uporabnika v skupino sudo, da bo lahko opravljal skrbniška opravila. Če te potrebe ni, lahko ta korak preskočite:
sudo gpasswd -a vnc sudo
Naslednji korak je zagon strežnika VNC z uporabniškimi pravicami vnc za ustvarjanje varnega gesla in konfiguracijskih datotek v imeniku ~/.vnc/. Geslo je lahko dolgo od 6 do 8 znakov (odvečni znaki so izrezani). Po potrebi se nastavi tudi geslo samo za ogled, tj. brez dostopa do tipkovnice in miške. Naslednji ukazi se izvajajo kot uporabnik vnc:
su - vnc
vncserver -localhost no
Protokol RFB privzeto uporablja obseg vrat TCP od 5900 do 5906 - to je tako imenovani. zaslonska vrata, od katerih vsako ustreza zaslonu strežnika X. V tem primeru so vrata povezana z zasloni od :0 do :6. Primerek strežnika VNC, ki smo ga zagnali, posluša vrata 5901 (zaslon: 1). Drugi primerki lahko delujejo na drugih vratih z zasloni :2, :3 itd. Pred nadaljnjo konfiguracijo morate ustaviti strežnik:
vncserver -kill :1
Ukaz bi moral prikazati nekaj takega: "Killing Xtigervnc ID ID 18105 ... uspeh!"
Ko se TigerVNC zažene, zažene skript ~/.vnc/xstartup za konfiguracijo konfiguracijskih nastavitev. Ustvarimo svoj skript, najprej shranimo varnostno kopijo obstoječega, če obstaja:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
Sejo namiznega okolja XFCE zažene naslednji skript xstartup:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
Ukaz xrdb je potreben, da VNC prebere datoteko .Xresources v domačem imeniku. Tam lahko uporabnik določi različne nastavitve grafičnega namizja: upodabljanje pisave, barve terminala, teme kazalca itd. Skript mora biti izvršljiv:
chmod 755 ~/.vnc/xstartup
S tem je nastavitev strežnika VNC zaključena. Če ga zaženete z ukazom vncserver -localhost no (kot uporabnik vnc), se lahko povežete s predhodno podanim geslom in vidite naslednjo sliko:
Zagon storitve prek systemd
Ročni zagon strežnika VNC ni primeren za uporabo v boju, zato bomo konfigurirali sistemsko storitev. Ukazi se izvajajo kot root (uporabljamo sudo). Najprej ustvarimo novo datoteko enote za naš strežnik:
sudo nano /etc/systemd/system/[email protected]
Simbol @ v imenu vam omogoča posredovanje argumenta za konfiguracijo storitve. V našem primeru določa vrata zaslona VNC. Datoteka enote je sestavljena iz več razdelkov:
[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
Nato morate sistemd obvestiti o novi datoteki in jo aktivirati:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
Številka 1 v imenu določa številko zaslona.
Zaustavite strežnik VNC, ga zaženite kot storitev in preverite stanje:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Če storitev deluje, bi morali dobiti nekaj takega.
Povezava z namizjem
Naša konfiguracija ne uporablja šifriranja, zato lahko napadalci prestrežejo omrežne pakete. Poleg tega v strežnikih VNC precej pogosto
sudo netstat -ap |more
V Linuxu, FreeBSD, OS X in drugih operacijskih sistemih, podobnih UNIX-u, se tunel iz odjemalskega računalnika izvede s pomočjo pripomočka ssh (sshd mora delovati na strežniku VNC):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
Možnost -L poveže vrata 5901 oddaljene povezave z vrati 5901 na lokalnem gostitelju. Možnost -C omogoča stiskanje, možnost -N pa pove ssh, naj ne izvede oddaljenega ukaza. Možnost -l podaja prijavo za oddaljeno prijavo.
Po nastavitvi tunela na lokalnem računalniku morate zagnati odjemalca VNC in vzpostaviti povezavo z gostiteljem 127.0.0.1:5901 (localhost:5901) z uporabo predhodno določenega gesla za dostop do strežnika VNC. Zdaj lahko varno komuniciramo prek šifriranega tunela z grafičnim namiznim okoljem XFCE na VPS. Na posnetku zaslona se zgornji pripomoček izvaja v terminalskem emulatorju, da prikaže nizko porabo računalniških virov virtualnega stroja. Potem bo vse odvisno od uporabniških aplikacij.
Strežnik VNC v Linuxu lahko namestite in konfigurirate na skoraj vsakem VPS. To ne zahteva dragih in zahtevnih konfiguracij z emulacijo video adapterja ali nakupa licenc komercialne programske opreme. Poleg možnosti sistemske storitve, ki smo jo upoštevali, obstajajo še druge: zagon v demonskem načinu (prek /etc/rc.local), ko se sistem zažene, ali na zahtevo prek inetd. Slednje je zanimivo za ustvarjanje večuporabniških konfiguracij. Internetni superserver bo zagnal strežnik VNC in z njim povezal odjemalca, strežnik VNC pa bo ustvaril nov zaslon in začel sejo. Za preverjanje pristnosti znotraj njega lahko uporabite grafični upravitelj zaslona (npr.
Vir: www.habr.com