Unii utilizatori închiriază VPS relativ ieftin cu Windows pentru a rula servicii desktop la distanță. Același lucru se poate face și pe Linux fără a vă găzdui propriul hardware într-un centru de date sau a închiria un server dedicat. Unii oameni au nevoie de un mediu grafic familiar pentru testare și dezvoltare sau de un desktop la distanță cu un canal larg pentru lucrul de pe dispozitive mobile. Există multe opțiuni pentru utilizarea sistemului VNC (Virtual Network Computing) bazat pe protocolul Remote FrameBuffer (RFB). În acest scurt articol vă vom spune cum să o configurați pe o mașină virtuală cu orice hypervisor.
Cuprins:
Selectarea unui server VNC
Serviciul VNC poate fi încorporat în sistemul de virtualizare, iar hypervisorul îl va conecta cu dispozitivele emulate și nu va fi necesară nicio configurare suplimentară. Această opțiune implică o suprasarcină semnificativă și nu este acceptată de toți furnizorii - chiar și într-o implementare mai puțin intensivă în resurse, când în loc de a emula un dispozitiv grafic real, o abstractizare simplificată (framebuffer) este transferată pe mașina virtuală. Uneori, un server VNC este legat de un server X care rulează, dar această metodă este mai potrivită pentru accesarea unei mașini fizice, iar pe una virtuală creează o serie de dificultăți tehnice. Cel mai simplu mod de a instala un server VNC este cu un server X încorporat. Nu necesită dispozitive fizice (adaptor video, tastatură și mouse) sau emularea acestora folosind un hypervisor și, prin urmare, este potrivit pentru orice tip de VPS.
Instalare și configurare
Vom avea nevoie de o mașină virtuală cu Ubuntu Server 18.04 LTS în configurația implicită. Există mai multe servere VNC în depozitele standard ale acestei distribuții:
Instalarea mediului desktop cu toate dependențele se face cu următoarea comandă:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
În continuare, trebuie să instalați serverul VNC:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Rularea acestuia ca superutilizator este o idee proastă. Creați un utilizator și un grup:
sudo adduser vnc
Să adăugăm utilizatorul la grupul sudo, astfel încât să poată efectua sarcini legate de administrare. Dacă nu este nevoie, puteți sări peste acest pas:
sudo gpasswd -a vnc sudo
Următorul pas este să rulați serverul VNC cu privilegii de utilizator vnc pentru a crea o parolă sigură și fișiere de configurare în directorul ~/.vnc/. Lungimea parolei poate fi de la 6 la 8 caractere (caracterele suplimentare sunt tăiate). Dacă este necesar, se setează și o parolă numai pentru vizualizare, de exemplu. fără acces la tastatură și mouse. Următoarele comenzi sunt executate ca utilizator vnc:
su - vnc
vncserver -localhost no
În mod implicit, protocolul RFB utilizează intervalul de porturi TCP de la 5900 la 5906 - acesta este așa-numitul. porturi de afișare, fiecare corespunzând unui ecran de server X. În acest caz, porturile sunt asociate cu ecrane de la :0 la :6. Instanța serverului VNC pe care am lansat-o ascultă portul 5901 (ecran: 1). Alte instanțe pot funcționa pe alte porturi cu ecrane :2, :3 etc. Înainte de configurarea ulterioară, trebuie să opriți serverul:
vncserver -kill :1
Comanda ar trebui să afișeze ceva de genul: „Uciderea procesului Xtigervnc ID 18105... succes!”
Când pornește TigerVNC, rulează scriptul ~/.vnc/xstartup pentru a configura setările de configurare. Să ne creăm propriul script, salvând mai întâi o copie de rezervă a celui existent, dacă acesta există:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
Sesiunea de mediu desktop XFCE este pornită de următorul script xstartup:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
Comanda xrdb este necesară pentru ca VNC să citească fișierul .Xresources din directorul principal. Acolo utilizatorul poate defini diferite setări grafice pentru desktop: redarea fontului, culorile terminalului, temele cursorului etc. Scriptul trebuie să fie executabil:
chmod 755 ~/.vnc/xstartup
Aceasta completează configurarea serverului VNC. Dacă îl rulați cu comanda vncserver -localhost no (ca utilizator vnc), vă puteți conecta cu parola specificată anterior și puteți vedea următoarea imagine:
Pornirea unui serviciu prin systemd
Pornirea manuală a unui server VNC nu este potrivită pentru utilizare în luptă, așa că vom configura un serviciu de sistem. Comenzile sunt executate ca root (folosim sudo). Mai întâi, să creăm un nou fișier de unitate pentru serverul nostru:
sudo nano /etc/systemd/system/[email protected]
Simbolul @ din nume vă permite să treceți un argument pentru a configura serviciul. În cazul nostru, specifică portul de afișare VNC. Fișierul unitar este format din mai multe secțiuni:
[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
Apoi, trebuie să notificați systemd despre noul fișier și să-l activați:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
Numărul 1 din nume specifică numărul ecranului.
Opriți serverul VNC, porniți-l ca serviciu și verificați starea:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Dacă serviciul rulează, ar trebui să obținem ceva de genul acesta.
Conexiune la desktop
Configurația noastră nu folosește criptarea, astfel încât pachetele de rețea pot fi interceptate de atacatori. În plus, în serverele VNC destul de des
sudo netstat -ap |more
În Linux, FreeBSD, OS X și alte sisteme de operare asemănătoare UNIX, un tunel de la computerul client este realizat folosind utilitarul ssh (sshd trebuie să ruleze pe serverul VNC):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
Opțiunea -L leagă portul 5901 al conexiunii la distanță la portul 5901 pe localhost. Opțiunea -C permite compresia, iar opțiunea -N îi spune lui ssh să nu execute comanda de la distanță. Opțiunea -l specifică autentificarea pentru autentificare de la distanță.
După configurarea tunelului pe computerul local, trebuie să lansați clientul VNC și să stabiliți o conexiune la gazda 127.0.0.1:5901 (localhost:5901), folosind parola specificată anterior pentru a accesa serverul VNC. Acum putem comunica în siguranță printr-un tunel criptat cu mediul desktop grafic XFCE de pe VPS. În captură de ecran, utilitarul de top rulează în emulatorul de terminal pentru a arăta consumul redus de resurse de calcul al mașinii virtuale. Apoi totul va depinde de aplicațiile utilizatorului.
Puteți instala și configura un server VNC în Linux pe aproape orice VPS. Acest lucru nu necesită configurații costisitoare și consumatoare de resurse cu emularea adaptorului video sau achiziționarea de licențe software comerciale. Pe lângă opțiunea de service de sistem pe care am luat-o în considerare, există și altele: lansare în modul daemon (prin /etc/rc.local) când sistemul pornește sau la cerere prin inetd. Acesta din urmă este interesant pentru crearea de configurații multi-utilizator. Internet Superserver va porni serverul VNC și va conecta clientul la acesta, iar serverul VNC va crea un nou ecran și va începe sesiunea. Pentru a vă autentifica în cadrul acestuia, puteți utiliza un manager de afișare grafică (de exemplu,
Sursa: www.habr.com