VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04

VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04
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
Instalare și configurare
Pornirea unui serviciu prin systemd
Conexiune la desktop

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: TightVNC, TigerVNC, x11vnc si altii. Ne-am stabilit pe TigerVNC - o furcă actuală a TightVNC, care nu este acceptată de dezvoltator. Configurarea altor servere se face într-un mod similar. De asemenea, trebuie să alegeți un mediu desktop: opțiunea optimă, în opinia noastră, ar fi XFCE din cauza cerințelor relativ scăzute pentru resursele de calcul. Cei care doresc pot instala un alt DE sau WM: totul depinde de preferințele personale, dar alegerea software-ului afectează direct nevoia de RAM și nuclee de calcul.

VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04

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

VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04

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

VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04
Î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:

VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04

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.

VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04

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 găsiți vulnerabilități, așa că nu ar trebui să le deschideți pentru acces de pe Internet. Pentru a vă conecta în siguranță la computerul local, trebuie să împachetați traficul într-un tunel SSH și apoi să configurați un client VNC. Pe Windows, puteți utiliza un client SSH grafic (de exemplu, PuTTY). Pentru securitate, TigerVNC de pe server ascultă doar localhost și nu este direct accesibil din rețelele publice:


sudo netstat -ap |more

VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04
Î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.

VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04
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, LightDM), iar după deconectarea clientului, sesiunea va fi închisă și toate programele care lucrează cu ecranul vor fi încheiate.

VPS pe Linux cu o interfață grafică: lansarea unui server VNC pe Ubuntu 18.04

Sursa: www.habr.com

Adauga un comentariu