Cum se instalează și se configurează accesul la distanță VNC pentru desktopul GNOME pe CentOS 7

Introducere

VNC sau Virtual Network Computing este un protocol independent de platformă care permite utilizatorilor să se conecteze la un sistem informatic de la distanță și să utilizeze resursele acestuia de la o interfață grafică cu utilizatorul (GUI).

Este ca și cum ai controla de la distanță o aplicație: tastele sau clicurile de mouse ale computerului client sunt transmise prin rețea către computerul de la distanță. VNC permite, de asemenea, partajarea clipboard-ului între cele două calculatoare. Dacă veniți dintr-un fundal de server Microsoft Windows, VNC este foarte asemănător cu Remote Desktop Service, cu excepția faptului că este disponibil și pentru OS X, Linux și alte sisteme de operare.

Ca orice altceva în lumea rețelelor, VNC se bazează pe modelul client-server: Serverul VNC rulează pe un computer la distanță – Droplet-ul dumneavoastră – care servește cererile primite de la client.

Obiective

În acest tutorial vom învăța cum să instalăm și să configurăm un server VNC pe CentOS 7. Vom instala serverul TigerVNC, care este disponibil în mod gratuit din depozitul TigerVNC GitHub.

Pentru a demonstra cum funcționează VNC, vom instala și desktop-ul GNOME pe serverul CentOS. Vom crea două conturi de utilizator și vom configura accesul VNC pentru acestea. Vom testa apoi conectivitatea acestora la desktop-ul de la distanță și, în cele din urmă, vom învăța cum să securizăm conexiunea de la distanță printr-un tunel SSH.

Precondiții

Comandațiile, pachetele și fișierele prezentate în acest tutorial au fost testate pe o instalare minimă a CentOS 7. Recomandăm următoarele:

  • Distro: CentOS 7, 64 de biți
  • Cerințe de resurse: Un Droplet cu 2 GB RAM
  • Pentru a urmări acest tutorial, trebuie să folosiți un utilizator sudo. Pentru a înțelege cum funcționează privilegiile sudo, puteți consulta acest tutorial DigitalOcean

Atenție: Nu ar trebui să executați nicio comandă, interogare sau configurație din acest tutorial pe un server Linux de producție. Acest lucru ar putea duce la probleme de securitate și timp de nefuncționare.

Pasul 1 – Crearea a două conturi de utilizator

În primul rând, vom crea două conturi de utilizator. Aceste conturi se vor conecta de la distanță la serverul nostru CentOS 7 de la clienții VNC.

  • joevnc
  • janevnc

Executați următoarea comandă pentru a adăuga un cont de utilizator pentru joevnc:

sudo useradd -c "User Joe Configured for VNC Access" joevnc

Apoi executați comanda passwd pentru a schimba parola lui joevnc:

sudo passwd joevnc

La ieșire ni se va cere noua parolă. Odată furnizată, contul va fi pregătit pentru autentificare:

Changing password for user joevnc.New password:Retype new password:passwd: all authentication tokens updated successfully.

În continuare, creați un cont pentru janevnc:

sudo useradd -c "User Jane Configured for VNC Access" janevnc

Setați parola pentru janevnc:

sudo passwd janevnc

Pasul 2 – Instalarea biroului GNOME

Acum vom instala biroul GNOME. GNOME este un efort de colaborare: este o colecție de software liber și open source care alcătuiește un mediu desktop foarte popular. Există și alte medii desktop, cum ar fi KDE, dar GNOME este mai popular. Utilizatorii noștri VNC vor folosi GNOME pentru a interacționa cu serverul de pe desktop-ul său:

sudo yum groupinstall -y "GNOME Desktop"

În funcție de viteza rețelei dumneavoastră, acest lucru poate dura câteva minute.

După ce grupul de pachete este instalat, reporniți serverul:

sudo reboot

Troubleshooting – Server blocat în faza de pornire

În funcție de modul în care a fost configurat serverul, atunci când mașina pornește, aceasta poate rămâne în faza de pornire afișând un mesaj ca acesta:

Initial setup of CentOS Linux 7 (core)1) License information (Licence not accepted)Please make your choice from above :

Pentru a trece de acest lucru, apăsați 1 (citire licență), apoi 2 (acceptare licență) și apoi C (pentru a continua). Este posibil să trebuiască să apăsați C de două sau mai multe ori. Imaginea de mai jos arată acest lucru:

Dacă nu vedeți această eroare și procesul de pornire se desfășoară fără probleme, cu atât mai bine – puteți trece la pasul următor.

Pasul 3 – Instalarea serverului TigerVNC

TigerVNC este software-ul care ne va permite să realizăm o conexiune desktop la distanță.

Instalați serverul Tiger VNC:

sudo yum install -y tigervnc-server

Aceasta ar trebui să arate o ieșire ca următoarea:

Loaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile. . .Running transaction Installing : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 1/1 Verifying : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 1/1Installed: tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7Complete!

Acum avem instalat serverul VNC și desktop-ul GNOME. De asemenea, am creat două conturi de utilizator pentru conectarea prin VNC.

Pasul 4 – Configurarea serviciului VNC pentru doi clienți

Serverele VNC nu pornesc automat atunci când sunt instalate pentru prima dată. Pentru a verifica acest lucru, rulați următoarea comandă:

sudo systemctl status vncserver@:.service

Lovitura va fi ca aceasta:

vncserver@:.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled) Active: inactive (dead)

De asemenea, puteți rula această comandă:

sudo systemctl is-enabled [email protected]

Aceasta ar trebui să afișeze o ieșire ca aceasta:

disabled

Atunci de ce este dezactivat? Pentru că fiecare utilizator va porni o instanță separată a daemonului serviciului VNC. Cu alte cuvinte, VNC nu rulează ca un singur proces care deservește fiecare solicitare a utilizatorului. Fiecare utilizator care se conectează prin VNC va trebui să pornească o nouă instanță a daemonului (sau administratorul de sistem poate automatiza acest lucru).

CentOS 7 utilizează daemonul systemd pentru a iniția alte servicii. Fiecare serviciu care rulează nativ sub systemd are un fișier unitate de serviciu care este plasat în directorul /lib/systemd/system de către programul de instalare yum. Procesele care sunt pornite automat la pornire au o legătură către acest fișier unitate de serviciu plasat în directorul /etc/systemd/system/.

În cazul nostru, un fișier unitate de serviciu generic a fost creat în directorul /lib/systemd/system/, dar nu a fost creată nicio legătură sub /etc/systemd/system/. Pentru a testa acest lucru, rulați următoarele comenzi:

sudo ls -l /lib/systemd/system/vnc*

Ar trebui să vedeți:

-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]

Apoi verificați sub /etc/systemd/system/:

sudo ls -l /etc/systemd/system/*.wants/vnc*

Aceasta nu există:

ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory

Atunci, primul pas este să pornim două instanțe noi ale serverului VNC pentru cei doi utilizatori ai noștri. Pentru a face acest lucru, va trebui să facem două copii ale fișierului generic al unității de serviciu VNC sub /etc/system/system. În fragmentul de cod de mai jos, se fac două copii cu două nume diferite:

sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:4.servicesudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:5.service

De ce am adăugat două numere (împreună cu două puncte) în numele fișierelor copiate?

Din nou, asta se întoarce la conceptul de servicii VNC individuale. VNC de unul singur rulează pe portul 5900. Deoarece fiecare utilizator va rula propriul server VNC, fiecare utilizator va trebui să se conecteze prin intermediul unui port separat. Adăugarea unui număr în numele fișierului îi spune lui VNC să ruleze acel serviciu ca un subport al 5900. Astfel, în cazul nostru, serviciul VNC al lui joevnc va rula pe portul 5904 (5900 + 4), iar cel al lui janevnc va rula pe 5905 (5900 + 5).

În continuare, editați fișierul unității de serviciu pentru fiecare client. Deschideți fișierul /etc/systemd/system/vncserver@:4.service cu editorul vi:

sudo vi /etc/systemd/system/vncserver@:4.service

O privire la secțiunea „Quick HowTo” ne spune că am finalizat deja primul pas. Acum trebuie să parcurgem pașii rămași. Comentariile ne spun, de asemenea, că VNC este o conexiune care nu este de încredere. Vom vorbi despre acest lucru mai târziu.

Pentru moment, editați secțiunea a fișierului, înlocuind instanțele de <USER> cu joevnc. De asemenea, adăugați clauza -geometry 1280x1024 la sfârșitul parametrului ExecStart. Aceasta doar îi spune lui VNC dimensiunea ecranului în care ar trebui să înceapă. Veți modifica în total două linii. Iată cum ar trebui să arate fișierul modificat (rețineți că nu este afișat întregul fișier):

# The vncserver service unit file## Quick HowTo:# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service# 2. Edit <USER> and vncserver parameters appropriately# ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")# 3. Run `systemctl daemon-reload`# 4. Run `systemctl enable vncserver@:<display>.service`#. . .Description=Remote desktop service (VNC)After=syslog.target network.targetType=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/sbin/runuser -l joevnc -c "/usr/bin/vncserver %i -geometry 1280x1024" PIDFile=/home/joevnc/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'WantedBy=multi-user.target

Salvați fișierul și ieșiți din vi.

În mod similar, deschideți fișierul /etc/systemd/system/vncserver@:5.service în vi și faceți modificările pentru utilizatorul janevnc:

sudo vi /etc/systemd/system/vncserver@:5.service

Iată doar secțiunea cu modificările marcate:

Type=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/sbin/runuser -l janevnc -c "/usr/bin/vncserver %i -geometry 1280x1024"PIDFile=/home/janevnc/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

În continuare, rulați următoarele comenzi pentru a reîncărca daemonul systemd și, de asemenea, pentru a vă asigura că VNC pornește pentru doi utilizatori la pornire.

sudo systemctl daemon-reload

Activați prima instanță de server:

sudo systemctl enable vncserver@:4.service

Scoateți:

ln -s '/etc/systemd/system/vncserver@:4.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:4.service'

Activați a doua instanță de server:

sudo systemctl enable vncserver@:5.service

Scoateți:

ln -s '/etc/systemd/system/vncserver@:5.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:5.service'

Acum ați configurat două instanțe de server VNC.

Pasul 5 – Configurarea firewall-ului

În continuare, va trebui să configurăm firewall-ul pentru a permite traficul VNC doar prin porturile 5904 și 5905. CentOS 7 utilizează Dynamic Firewall prin intermediul daemonului firewalld; serviciul nu trebuie să fie repornit pentru ca modificările să aibă efect.

Serviciul firewalld ar trebui să pornească automat la pornirea sistemului, dar este întotdeauna bine să verificați:

sudo firewall-cmd --state

Aceasta ar trebui să arate:

running

Dacă starea este „not running” din orice motiv, executați următoarea comandă pentru a vă asigura că este în funcțiune:

sudo systemctl start firewalld

Acum adăugați regulile pentru porturile 5904 și 5905:

sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp

Ieșire:

success

Încărcați firewall-ul:

sudo firewall-cmd --reload

Ieșire:

success

Etapa 6 – Setarea parolelor VNC

Suntem la un pas de a vedea VNC în acțiune. În acest pas, utilizatorii vor trebui să își seteze parolele VNC. Acestea nu sunt parolele Linux ale utilizatorilor, ci parolele de conectare la sesiunile VNC.

Deschideți o altă conexiune de terminal la serverul CentOS 7 și, de data aceasta, conectați-vă ca joevnc.

ssh joevnc@your_server_ip

Executați următoarea comandă:

vncserver

După cum se arată în ieșirea de mai jos, serverul îi va cere lui joevnc să configureze o parolă VNC. După tastarea parolei, programul arată, de asemenea, un număr de fișiere care sunt create în directorul personal al utilizatorului:

You will require a password to access your desktops.Password:Verify:xauth: file /home/joevnc/.Xauthority does not existNew 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1Creating default startup script /home/joevnc/.vnc/xstartupStarting applications specified in /home/joevnc/.vnc/xstartupLog file is /home/joevnc/.vnc/localhost.localdomain:1.log

Să ne uităm la linia New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1. localhost.localdomain a fost numele serverului în exemplul nostru; în cazul dumneavoastră ar putea fi diferit. Observați numărul de după numele serverului: (1, separat de două puncte). Nu este numărul din fișierul unității de serviciu al lui joevnc (care era 4). Acest lucru se datorează faptului că acesta este numărul de afișare pe care va rula sesiunea lui joevnc în acest server, nu numărul portului serviciului (5904) în sine.

În continuare, deschideți o nouă sesiune de terminal și conectați-vă ca janevnc. Și aici, porniți serverul VNC și setați o parolă pentru janevnc:

vncserver

Ar trebui să vedeți o ieșire similară care să arate că sesiunea lui janevnc va rula pe ecranul 2.

În cele din urmă, reîncărcați serviciile din sesiunea principală de terminal:

sudo systemctl daemon-reloadsudo systemctl restart vncserver@:4.servicesudo systemctl restart vncserver@:5.service

Pasul 7 – Conectarea la desktopurile de la distanță cu un client VNC

Pentru acest tutorial, vom presupune că utilizatorii joevnc și janevnc încearcă să se conecteze la serverul CentOS 7 de pe computerele lor Windows.

Cei doi vor avea nevoie fiecare de un client VNC pentru Windows pentru a se conecta la desktopurile de la distanță. Acest client este la fel ca un client terminal precum PuTTY, cu excepția faptului că afișează o ieșire grafică. Există diverși clienți VNC disponibili, dar cel pe care îl vom folosi noi este RealVNC, disponibil aici. VNC Viewer pentru Mac OS X poate fi descărcat de pe aceeași pagină, iar versiunea pentru Mac este destul de asemănătoare cu cea pentru Windows.

Când VNC Viewer este pornit, acesta afișează o casetă de dialog ca aceasta:

În câmpul VNC Server, adăugați adresa IP a serverului dumneavoastră CentOS 7. Specificați numărul de port 5904 după IP-ul serverului, separat prin două puncte (:). Am folosit 5904 deoarece acesta este portul serviciului VNC pentru joevnc.

Am decis, de asemenea, să lăsăm VNC Viewer să aleagă metoda de criptare. Această opțiune va cripta doar parola trimisă prin rețea. Orice comunicare ulterioară cu serverul va fi necriptată. (Vom configura un tunel SSH securizat în etapa finală.)

De fapt, un mesaj de avertizare arată exact acest lucru:

Acceptați avertismentul pentru moment. Se afișează o solicitare de parolă:

Introduceți parola VNC a lui joevnc pe care ați setat-o mai devreme.

Se deschide o nouă fereastră care arată desktopul GNOME pentru serverul nostru CentOS la distanță:

Acceptați mesajul de bun venit implicit.

Acum joevnc poate porni un instrument grafic, cum ar fi calculatorul GNOME:

Puteți lăsa această conexiune desktop deschisă.

Acum janevnc poate, de asemenea, să pornească o altă sesiune VNC cu serverul CentOS. Adresa IP este aceeași, iar portul este 5905:

Când janevnc se conectează prin VNC Viewer, este afișat un desktop gol cu un mesaj de bun venit, la fel cum a fost afișat pentru joevnc. Cu alte cuvinte, cei doi utilizatori nu împart instanțele de desktop. desktop-ul lui joevnc ar trebui să afișeze în continuare calculatorul.

Pentru a închide sesiunea de desktop la distanță, este suficientă simpla închidere a ferestrei. Totuși, acest lucru nu oprește serviciul VNC al utilizatorului în fundal pe server. Dacă serviciul nu este oprit sau repornit și dacă mașina nu a avut reporniri, aceeași sesiune de desktop ar fi prezentată la următoarea conectare.

Închideți ferestrele VNC Viewer pentru joevnc și janevnc. Închideți și sesiunile lor de terminal. Din fereastra principală a terminalului, verificați dacă serviciile VNC sunt încă în funcțiune:

sudo systemctl status vncserver@:4.service

Lovitura de ieșire arată că desktop-ul la distanță este încă în funcțiune:

vncserver@:4.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled) Active: active (running) since Sat 2014-11-01 12:06:49 EST; 58min ago Process: 2014 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS). . .

Verificați cel de-al doilea serviciu:

sudo systemctl status vncserver@:5.service

Și acesta este în funcțiune:

vncserver@:5.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:5.service; enabled) Active: active (running) since Sat 2014-11-01 12:42:56 EST; 22min ago Process: 3748 ExecStart=/sbin/runuser -l janevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS). . .

Dacă ați dori să vă conectați din nou la desktop-ul lui joevnc în acest moment, ați vedea aceeași aplicație de calculator deschisă.

Acest lucru prezintă câteva provocări interesante pentru administratorii de sistem. Dacă aveți un număr de utilizatori care se conectează la server prin VNC, este posibil să doriți să concepeți o modalitate de a opri serviciile VNC ale acestora atunci când nu mai sunt necesare. Acest lucru ar putea economisi câteva resurse valoroase ale sistemului.

Soluționarea problemelor – Serviciul VNC se blochează

În timp ce testați și vă jucați cu VNC, este posibil ca uneori să constatați că serviciul s-a blocat și este irecuperabil. Când încercați să verificați starea:

sudo systemctl status vncserver@:4.service

Este posibil să apară acest mesaj de eroare lung:

vncserver@:4.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled) Active: failed (Result: exit-code) since Fri 2014-11-07 00:02:38 EST; 2min 20s ago Process: 2221 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=2) Process: 1257 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)

Încercarea de a porni serviciul nu funcționează:

sudo systemctl start vncserver@:4.service

Dezactivare eșuată:

Job for vncserver@:4.service failed. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.

De obicei, motivul este destul de simplu. Verificați /var/log/messages:

sudo tail /var/log/messages

Eroarea aferentă va arăta astfel:

Nov 7 00:08:36 localhost runuser: Warning: localhost.localdomain:4 is taken because of /tmp/.X11-unix/X4Nov 7 00:08:36 localhost runuser: Remove this file if there is no X server localhost.localdomain:4Nov 7 00:08:36 localhost runuser: A VNC server is already running as :4Nov 7 00:08:36 localhost systemd: vncserver@:4.service: control process exited, code=exited status=2Nov 7 00:08:36 localhost systemd: Failed to start Remote desktop service (VNC).Nov 7 00:08:36 localhost systemd: Unit vncserver@:4.service entered failed state.Nov 7 00:08:36 localhost systemd: Failed to mark scope session-c3.scope as abandoned : Stale file handle

Remediul este de a șterge fișierul din folderul /tmp:

sudo rm -i /tmp/.X11-unix/X4

Scoaterea:

rm: remove socket '/tmp/.X11-unix/X4'? y

Apoi porniți serviciul VNC:

sudo systemctl start vncserver@:4.service

Soluționare generală a problemelor

Deși relativ rar, este posibil să întâlniți și alte erori atunci când lucrați cu VNC. De exemplu, ecranul desktopului de la distanță poate deveni alb sau se poate bloca, sesiunea se poate bloca cu un mesaj de eroare enigmatic, VNC Viewer poate să nu se conecteze corect sau să nu transmită comenzi către GUI pentru a lansa aplicații etc.

Vă recomandăm să verificați fișierul /var/log/messages pentru a înțelege mai bine. Uneori este posibil să fie nevoie să reporniți serverul sau, în cazuri extreme, să recreați serviciul VNC.

Resursele de sistem pot fi, de asemenea, vinovate; este posibil să trebuiască să adăugați RAM suplimentar la Droplet-ul dvs. etc.

Pasul 8 – Securizarea sesiunilor VNC prin tunelare SSH

Până acum, atât joevnc, cât și janevnc au accesat desktop-urile lor de la distanță prin canale necriptate. După cum am văzut mai devreme, VNC Viewer ne avertizează despre acest lucru în momentul conectării; doar parola este criptată la începutul sesiunilor. Orice trafic de rețea și transfer de date ulterioare sunt deschise pentru ca oricine să le intercepteze la mijloc.

Despre SSH Tunnelling

Acesta este locul în care sesiunile Secure Shell (SSH) pot fi de ajutor. Cu SSH, VNC poate rula în contextul unei sesiuni criptate SSH. Acest lucru este cunoscut sub numele de tunelizare. De fapt, traficul VNC se suprapune pe protocolul SSH, ceea ce face ca toate comunicațiile sale cu serverul să fie criptate. Se numește tunelizare pentru că SSH oferă protecție de tip wraparound asupra VNC, iar VNC rulează ca într-un tunel în cadrul SSH. Tunelizarea SSH poate fi utilizată și pentru alte protocoale, cum ar fi POP, X sau IMAP.

Tunelizarea SSH funcționează cu redirecționarea porturilor, care este, în principiu, un mijloc de a transfera accesul de la un anumit port la un port diferit pe o altă mașină. Cu redirecționarea porturilor, atunci când o aplicație client se conectează la portul A care rulează pe mașina A, aceasta este redirecționată în mod transparent către portul B care rulează pe mașina B. Aplicația client nu este conștientă de această traducere și crede că se conectează la portul original. Redirecționarea porturilor este una dintre caracteristicile protocolului SSH.

Pentru informații mai detaliate despre tunelarea SSH, citiți acest tutorial.

În acest tutorial am configurat VNC pentru a rula pe porturile 5904 (pentru joevnc) și 5905 (pentru janevnc).

Cu redirecționarea porturilor, putem seta clientul nostru VNC local să se conecteze la portul 5900 de pe calculatorul client local, iar acesta poate fi mapat pe portul 5905 de pe serverul la distanță. Acest exemplu este pentru conexiunea lui janevnc, dar puteți urma cu ușurință aceiași pași pentru orice alt client.

Când aplicația client VNC pornește, aceasta poate fi direcționată către portul 5900 de pe localhost, iar redirecționarea noastră de port o va transporta în mod transparent către portul 5905 de pe serverul la distanță.

Nota: Va trebui să porniți de fiecare dată o secțiune SSH pentru a face conexiunea sigură.

OS X

Pe Mac, deschideți Terminal.

Introduceți următoarele informații de conexiune, asigurându-vă că înlocuiți your_server_ip cu adresa IP a serverului la distanță:

ssh -L 5900:your_server_ip:5905 janevnc@your_server_ip -N

Introduceți parola UNIX a lui janevnc. Conexiunea va părea că se blochează; puteți să o mențineți în funcțiune atâta timp cât utilizați desktopul de la distanță.

Acum treceți la instrucțiunile pentru VNC Viewer.

Windows

Pentru securizarea sesiunii VNC a lui janevnc, vom presupune că computerul local Windows are instalat PuTTY. PuTTY este gratuit și poate fi descărcat de aici.

Dacă sesiunile VNC și de terminal ale lui janevnc nu sunt deja închise, închideți-le acum.

Porniți PuTTY. În ecranul sesiunii, asigurați-vă că specificați adresa IP a serverului și dați un nume descriptiv conexiunii, apoi faceți clic pe butonul Save (Salvare) pentru a salva detaliile conexiunii. Observați cum am specificat username@your_server_ip în câmpul Hostname:

În continuare, extindeți elementul de meniu SSH din panoul de navigare din stânga și selectați elementul X11. Aceasta afișează proprietățile de redirecționare X11 pentru sesiune. Asigurați-vă că este bifată caseta de selectare pentru Enable X11 forwarding (Activare redirecționare X11). Acest lucru asigură că SSH criptează traficul X Windows care circulă între server și client:

În cele din urmă, selectați SSH > Tuneluri. Introduceți 5900 în câmpul Port sursă. În câmpul Destination (Destinație), specificați numele sau adresa IP a serverului dumneavoastră, urmată de două puncte și de numărul portului VNC pentru utilizatorul vizat. În cazul nostru, am specificat your_server_ip:5905.

Alternativ, ați putea utiliza portul 5902. În acest caz, 2 ar fi numărul de afișare pentru janevnc (vă amintiți mesajul afișat atunci când janevnc a rulat comanda vncserver).

Click pe butonul Add (Adăugare) și maparea va fi adăugată la Forwarded ports (Porturi redirecționate). Aici adăugăm redirecționarea porturilor pentru sesiunea SSH; atunci când utilizatorul se conectează la localhost la portul 5900, conexiunea va fi automat tunelată prin SSH la portul 5905 al serverului la distanță.

Întoarceți-vă la elementele Sessions (Sesiuni) și salvați sesiunea pentru janevnc. Faceți clic pe butonul Open (Deschidere) și se va deschide o nouă sesiune de terminal pentru janevnc. Conectați-vă ca janevnc cu parola UNIX corespunzătoare:

VNC Viewer

În continuare, porniți din nou VNC Viewer. De data aceasta, în adresa serverului VNC, tastați <^> și lăsați serverul VNC să aleagă metoda de criptare:

Click pe butonul Connect.

Vă va apărea în continuare caseta de dialog care vă avertizează cu privire la o sesiune necriptată, dar de data aceasta o puteți ignora în siguranță. VNC Viewer nu știe despre portul către care este redirecționat (acesta a fost setat în sesiunea SSH care tocmai a început) și presupune că încercați să vă conectați la mașina locală.

Acceptând acest avertisment se va afișa cunoscuta solicitare de parolă. Introduceți parola VNC a lui janevnc pentru a accesa desktop-ul de la distanță.

De unde știți că sesiunea a fost criptată? Dacă vă gândiți bine, am setat redirecționarea porturilor în sesiunea SSH. Dacă nu era stabilită o sesiune SSH, redirecționarea porturilor nu ar fi funcționat. De fapt, dacă închideți fereastra terminalului și vă deconectați din sesiunea PuTTY, apoi încercați să vă conectați doar cu VNC Viewer, o încercare de conectare la localhost:5900 ar afișa următorul mesaj de eroare:

Deci, dacă conexiunea localhost:5900 funcționează, puteți fi siguri că conexiunea este criptată.

Amintiți-vă că veți dori să stabiliți mai întâi conexiunea SSH de fiecare dată când utilizați VNC, pentru a vă asigura că conexiunea este întotdeauna criptată.

Concluzie

Accesul la sistemul dumneavoastră CentOS Linux de la un front-end GUI poate face administrarea sistemului mult mai simplă. Vă puteți conecta de la orice sistem de operare client și nu trebuie să depindeți de panourile de control de găzduire bazate pe web. VNC are o amprentă mult mai mică în comparație cu majoritatea panourilor de control.

Deși am arătat cum se pot conecta doi utilizatori obișnuiți cu clienții lor VNC, acest lucru este greu de practicat în mediile de producție serioase. În realitate, utilizatorii vor avea aplicații sau browsere personalizate pentru accesarea serverului. Rularea unui număr de servicii VNC pentru fiecare utilizator creează, de asemenea, o povară inutilă asupra resurselor sistemului, ca să nu mai vorbim de riscurile inerente asociate.

Dacă decideți să instalați și să rulați VNC pe serverul Linux de producție, vă recomandăm cu tărie să îl folosiți numai în scopuri administrative.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.