Neki korisnici iznajmljuju relativno jeftin VPS sa Windowsom za pokretanje usluga udaljene radne površine. Isto se može učiniti na Linuxu bez smještaja vlastitog hardvera u podatkovnom centru ili iznajmljivanja namjenskog servera. Nekim ljudima je potrebno poznato grafičko okruženje za testiranje i razvoj, ili udaljena radna površina sa širokim kanalom za rad sa mobilnih uređaja. Postoji mnogo opcija za korišćenje sistema virtuelnog mrežnog računarstva (VNC) zasnovanog na protokolu Remote FrameBuffer (RFB). U ovom kratkom članku ćemo vam reći kako ga konfigurirati na virtualnoj mašini s bilo kojim hipervizorom.
Sadržaj:
Odabir VNC servera
VNC servis se može ugraditi u sistem virtuelizacije, a hipervizor će ga povezati sa emuliranim uređajima i neće biti potrebna dodatna konfiguracija. Ova opcija uključuje značajne troškove i ne podržavaju je svi provajderi - čak i u implementaciji sa manje resursima, kada se umjesto emulacije stvarnog grafičkog uređaja, pojednostavljena apstrakcija (framebuffer) prenosi na virtuelnu mašinu. Ponekad je VNC server vezan za X server koji radi, ali ova metoda je pogodnija za pristup fizičkoj mašini, a na virtuelnoj stvara niz tehničkih poteškoća. Najlakši način da instalirate VNC server je sa ugrađenim X serverom. Ne zahtijeva fizičke uređaje (video adapter, tastaturu i miš) niti njihovu emulaciju pomoću hipervizora, te je stoga pogodan za bilo koju vrstu VPS-a.
Instalacija i konfiguracija
Trebaće nam virtuelna mašina sa Ubuntu serverom 18.04 LTS u podrazumevanoj konfiguraciji. Postoji nekoliko VNC servera u standardnim repozitorijumima ove distribucije:
Instalacija desktop okruženja sa svim zavisnostima se vrši sljedećom naredbom:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Zatim morate instalirati VNC server:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Pokretanje kao superkorisnik je loša ideja. Kreirajte korisnika i grupu:
sudo adduser vnc
Dodajmo korisnika u sudo grupu kako bi mogao obavljati zadatke vezane za administraciju. Ako nema takve potrebe, možete preskočiti ovaj korak:
sudo gpasswd -a vnc sudo
Sljedeći korak je pokretanje VNC servera s vnc korisničkim privilegijama kako biste kreirali sigurnu lozinku i konfiguracijske datoteke u ~/.vnc/ direktoriju. Dužina lozinke može biti od 6 do 8 znakova (dodatni znakovi su odsječeni). Po potrebi se postavlja i lozinka samo za gledanje, tj. bez pristupa tastaturi i mišu. Sljedeće naredbe se izvršavaju kao vnc korisnik:
su - vnc
vncserver -localhost no
Standardno, RFB protokol koristi raspon TCP portova od 5900 do 5906 - to je tzv. portovi za prikaz, od kojih svaki odgovara ekranu X servera. U ovom slučaju, portovi su povezani sa ekranima od :0 do :6. Instanca VNC servera koju smo pokrenuli sluša port 5901 (ekran: 1). Druge instance mogu raditi na drugim portovima sa ekranima :2, :3, itd. Prije daljnje konfiguracije, morate zaustaviti server:
vncserver -kill :1
Naredba bi trebala prikazati nešto poput ovoga: “Killing Xtigervnc proces ID 18105... uspjeh!”
Kada se TigerVNC pokrene, pokreće skriptu ~/.vnc/xstartup da konfiguriše postavke konfiguracije. Kreirajmo vlastitu skriptu, prvo spremimo sigurnosnu kopiju postojeće, ako postoji:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
XFCE sesiju desktop okruženja pokreće sljedeća xstartup skripta:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
Komanda xrdb je potrebna da VNC pročita datoteku .Xresources u matičnom direktoriju. Tamo korisnik može definirati različite grafičke postavke radne površine: renderiranje fonta, boje terminala, teme kursora itd. Skripta mora biti izvršna:
chmod 755 ~/.vnc/xstartup
Ovim je završeno podešavanje VNC servera. Ako ga pokrenete naredbom vncserver -localhost no (kao vnc korisnik), možete se povezati s prethodno navedenom lozinkom i vidjeti sljedeću sliku:
Pokretanje usluge putem systemd-a
Ručno pokretanje VNC servera nije prikladno za borbenu upotrebu, pa ćemo konfigurirati sistemsku uslugu. Komande se izvršavaju kao root (koristimo sudo). Prvo, napravimo novu jediničnu datoteku za naš server:
sudo nano /etc/systemd/system/[email protected]
Simbol @ u imenu vam omogućava da proslijedite argument za konfiguraciju usluge. U našem slučaju, specificira VNC port za prikaz. Datoteka jedinice sastoji se od nekoliko sekcija:
[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
Zatim morate obavijestiti systemd o novom fajlu i aktivirati ga:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
Broj 1 u imenu označava broj ekrana.
Zaustavite VNC server, pokrenite ga kao uslugu i provjerite status:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Ako je usluga pokrenuta, trebali bismo dobiti ovako nešto.
Desktop Connection
Naša konfiguracija ne koristi enkripciju, tako da napadači mogu presresti mrežne pakete. Osim toga, na VNC serverima prilično često
sudo netstat -ap |more
U Linuxu, FreeBSD, OS X i drugim OS-ovima sličnim UNIX-u, tunel od klijentskog računara se pravi pomoću ssh uslužnog programa (sshd mora biti pokrenut na VNC serveru):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
Opcija -L povezuje port 5901 udaljene veze sa portom 5901 na lokalnom hostu. Opcija -C omogućava kompresiju, a -N opcija govori ssh-u da ne izvršava udaljenu komandu. Opcija -l specificira prijavu za udaljenu prijavu.
Nakon podešavanja tunela na lokalnom računaru, potrebno je da pokrenete VNC klijent i uspostavite vezu sa hostom 127.0.0.1:5901 (localhost:5901), koristeći prethodno navedenu lozinku za pristup VNC serveru. Sada možemo bezbedno komunicirati preko šifrovanog tunela sa XFCE grafičkim desktop okruženjem na VPS-u. Na snimku ekrana, gornji uslužni program radi u emulatoru terminala kako bi pokazao nisku potrošnju računarskih resursa virtuelne mašine. Tada će sve ovisiti o korisničkim aplikacijama.
Možete instalirati i konfigurirati VNC server u Linuxu na gotovo svakom VPS-u. Ovo ne zahtijeva skupe i resursno intenzivne konfiguracije sa emulacijom video adaptera ili kupovinu komercijalnih softverskih licenci. Pored opcije sistemske usluge koju smo razmatrali, postoje i druge: pokretanje u demonskom režimu (preko /etc/rc.local) kada se sistem pokrene ili na zahtev preko inetd-a. Potonji je zanimljiv za kreiranje višekorisničkih konfiguracija. Internet superserver će pokrenuti VNC server i povezati klijenta sa njim, a VNC server će kreirati novi ekran i započeti sesiju. Za autentifikaciju unutar njega možete koristiti grafički upravitelj prikaza (na primjer,
izvor: www.habr.com