Control de la distanță pe computer. Configurarea UltraVnc. Server VNC sau Desktop la distanță pe Ubuntu

VNC ( Rețea virtuală Computingul este un sistem de acces la distanță care vă permite să utilizați o tastatură și un mouse pentru a interacționa interfata grafica desktop server la distanță. Cu ajutorul acestuia, puteți gestiona fișierele, software-ul și setările unui server la distanță fără a accesa linia de comandă.

Acest manual vă va ajuta să instalați VNC pe un server privat virtual Ubuntu 16.04 și să configurați o conexiune sigură folosind un tunel SSH. Serverul VNC va folosi TightVNC, un pachet de telecomandă rapid și ușor, care acceptă operarea chiar și pe internet lent.

Cerințe

  • Server Ubuntu 18.04 configurat cu .
  • Un computer local cu un client VNC preinstalat care acceptă conexiuni VNC printr-un tunel SSH. utilizatorii de Windows poate instala TightVNC, RealVNC sau UltraVNC. utilizatorii de Mac OS X poate folosi pachetul de partajare a ecranului încorporat sau poate folosi aplicații multiplatforme (de exemplu, RealVNC). utilizatorii Linux puteți alege vinagre, krdc, RealVNC, TightVNC etc.

1: Instalați Desktop Environment și VNC Server

În mod implicit, serverele Ubuntu 18.04 vin fără preinstalate mediu grafic desktop și server VNC. Prin urmare, mai întâi trebuie să instalați aceste componente. ÎN acest manual Sunt folosite pachetele Xfce și TightVNC, disponibile în depozitul oficial Ubuntu.

Pentru a instala pachetele specificate pe server, actualizați indexul și introduceți comanda:

actualizare sudo apt
sudo apt install xfce4 xfce4-goodies

Acum instalați TightVNC:

sudo apt install tightvncserver

Pentru a finaliza configurarea inițială Serverul VNC după ce l-ați instalat și ați ales o parolă puternică, utilizați comanda vncserver.

Comanda vă va solicita să selectați și să confirmați o parolă:

Veți avea nevoie de o parolă pentru a vă accesa desktop-urile.
Parolă:
Verifica:

Parola trebuie să aibă între șase și opt caractere. Parolele mai lungi vor fi scurtate automat la 8 caractere.

Odată ce vă confirmați parola, veți avea opțiunea de a crea o parolă numai pentru vizualizare. Utilizatorii care accesează VNC folosind o parolă de navigare nu vor putea controla VNC prin mouse sau tastatură. Această parolă vă permite să demonstrați VNC altor utilizatori, dacă este necesar.

Procesul va finaliza apoi configurarea VNC inițială și va crea fișiere de configurare.

Doriți să introduceți o parolă numai pentru vizualizare (da/n)? n
xauth: fișierul /home/8host/.Xauthority nu există
Noul desktop „X” este numele_gazdă:1
Se creează un script de pornire implicit /home/8host/.vnc/xstartup

2: Configurarea unui server VNC

Mai întâi trebuie să definiți comenzile pe care serverul VNC le va executa la pornire. Aceste comenzi ar trebui să fie în fișierul xstartup din directorul .vnc, care este stocat în directorul dvs. de acasă utilizator curent. Scriptul de pornire a fost creat de echipa vncserver, dar trebuie modificat pentru a funcționa cu Xfce.

Când VNC pornește pentru prima dată, folosește portul 5901. VNC apelează acest port: 1. VNC poate rula alte instanțe pe alte porturi, care vor fi numite :2, :3 etc.

Pentru a modifica setările serverului VNC, trebuie să opriți instanța folosind portul 5901.

vncserver -kill:1

Comanda va returna următorul mesaj (PID-ul va fi diferit):

Uciderea procesului Xtightvnc ID 17648

Creați o copie de rezervă a fișierului xstartup:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Apoi creează fișier nou xstartup:

nano ~/.vnc/xstartup

Lipiți în el următoarele comenzi, care va fi executat automat la pornirea serverului VNC. Salvați și închideți fișierul.

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4&

Cu prima comandă, xrdb $HOME/.Xresources, GUI-ul serverului VNC citește fișierul .Xresources. În fișierul .Xresources, utilizatorul poate face modificări la unele setări ale desktopului grafic (personalizarea culorilor terminalului, temele cursorului, fonturile). A doua comandă pur și simplu lansează Xfce, care stochează tot software-ul grafic necesar pentru a gestiona serverul.

Acum trebuie să faceți fișierul executabil:

sudo chmod +x ~/.vnc/xstartup

Reporniți VNC:

În timpul pornirii, serverul va reveni:

Noul desktop „X” este numele_gazdă:1
Pornirea aplicațiilor specificate în /home/8host/.vnc/xstartup
Fișierul jurnal este /home/8host/.vnc/your_hostname:1.log

3: Conexiune securizată la VNC

VNC nu folosește protocoale securizate atunci când se conectează. Creați un tunel SSH pentru conexiune sigură la server și apoi configurați clientul VNC să accepte tunelul conexiune directă.

Creați o conexiune SSH pe computerul dvs. local, care va merge la conexiunea localhost pentru VNC. Puteți face acest lucru pe Linux sau macOS prin intermediul terminalului folosind următoarea comandă:

Indicatorul -L specifică legările de porturi. În acest caz, legăm portul 5901 al conexiunii la distanță la portul 5901 de pe computerul local. Indicatorul -C permite compresia, iar -N îi spune lui ssh ce trebuie să facă comanda de la distanta nu este nevoie. Opțiunea -l specifică numele de conectare la distanță.

Nu uitați să înlocuiți 8host și your_server_ip cu datele dvs.

Dacă rulați printr-un client SSH grafic, cum ar fi PuTTY, utilizați your_server_ip ca conexiune IP în setările tunelului SSH și setați localhost:5901 ca port nou.

Odată ce tunelul este deschis și rulează, utilizați clientul VNC pentru a vă conecta la localhost:5901. Aceasta vă va cere parola pe care ați ales-o în secțiunea 1.

După aceasta, veți vedea ecranul standard Xfce.

Puteți accesa fișierele din directorul dvs. de pornire folosind un manager de fișiere sau din linie de comandă.

Apăsați CTRL + C în terminal pentru a închide tunelul SSH și a reveni la promptul de comandă. Acest lucru va încheia și sesiunea dvs. VNC.

4: Creați un fișier de serviciu VNC

Acum trebuie să configurați serverul VNC ca serviciu de sistem.

Creați un nou fișier unitate /etc/systemd/system/ [email protected]:

sudo nano /etc/systemd/system/ [email protected]

Simbolul @ de la sfârșitul numelui fișierului vă va permite să treceți un argument care poate fi utilizat în configurația serviciului. Folosind-o, puteți specifica portul VNC care ar trebui utilizat atunci când gestionați serviciul.

Adăugați următoarele rânduri la fișier. Asigurați-vă că modificați User, Group, WorkingDirectory și numele de utilizator în valoarea PIDFILE.

/etc/systemd/system/ [email protected]
Descriere=Porniți serverul TightVNC la pornire
După=syslog.target network.target
Tip = bifurcare
Utilizator=8gazdă
Grup=8gazdă
WorkingDirectory=/home/8host
PIDFile=/home/8host/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill:%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800:%i
ExecStop=/usr/bin/vncserver -kill:%i
WantedBy=multi-user.target

Comanda ExecStartPre oprește VNC dacă serviciul rulează deja. Comanda ExecStart pornește VNC și setează adâncimea culorii la culoare pe 24 de biți cu o rezoluție de 1280x800. De asemenea, puteți modifica aceste setări în funcție de nevoile dvs.

Salvați și închideți fișierul.

Apoi informați sistemul despre noul fișier de unitate.

sudo systemctl daemon-reload

Porniți-l:

sudo systemctl enable [email protected]

Numărul 1 după @ determină ce număr de afișare trebuie afișat în serviciu, în acest caz este valoarea implicită.

Opriți instanța actuală a serverului VNC dacă încă rulează.

vncserver -kill:1

Acum încercați să îl rulați ca orice alt serviciu systemd:

sudo systemctl start vncserver@1

Pentru a vă asigura că serverul rulează, verificați starea acestuia:

sudo systemctl status vncserver@1

[email protected]— Porniți serverul TightVNC la pornire

Încărcat: încărcat (/etc/systemd/system/ [email protected]; indirect; prestabilit furnizor: activat)
Activ: activ (în rulare) din Luni 2018-07-09 18:13:53 UTC; acum 2 min 14 s
Proces: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800:1 (cod=exit, status=0/SUCCESS)
Proces: 22316 ExecStartPre=/usr/bin/vncserver -kill:1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
PID principal: 22330 (Xtightvnc)
...

Serviciul VNC a fost acum adăugat la pornire.

Porniți din nou tunelul SSH:

ssh -L 5901:127.0.0.1:5901 -C -N -l 8host your_server_ip

Creați o nouă conexiune de la clientul VNC la localhost:5901 pentru a testa configurarea.

Concluzie

Acum serverul VNC este instalat pe serverul Ubuntu 18.04. Cu acesta, puteți gestiona fișierele, programele și setările unui server la distanță (de exemplu, lansați un browser web de la distanță).

Etichete: ,

Lucrul cu clientul VNC. Materialul se adresează utilizatorilor fără experiență.

1. Instalarea unui client VNC
2. Conectarea unui client VNC la un computer la distanță
3. Deconectarea clientului VNC de la computerul de la distanță
4. Reglarea clientului VNC
5. Probleme comune

Pentru a lucra cu un computer la distanță prin VNC, trebuie să rulați un program client (vizualizator VNC, client VNC) pe computerul utilizatorului. Acest program transmite date despre tastele și mișcările mouse-ului efectuate de utilizator către un computer de la distanță și afișează informații destinate a fi afișate pe ecran.

1. Instalarea unui client VNC
Pentru sistemul de operare Windows puteți descărca și instala gratuit clientul VNC UltraVNC și TightVNC.

Mac OS X începând cu versiunea 10.5 are suport pentru un client VNC în RemoteDesktop. Pentru versiunile anterioare Puteți utiliza clienții VNC JollysFastVNC și .

Pentru ramura Linux a Debian (Ubuntu), clientul VNC este instalat din depozit cu comanda:

Apt-get install vncviewer

Pentru ramura RedHat (CentOS, Fedora) - cu comanda:

Yum instalează vnc

Pentru FreeBSD, clientul VNC (TightVNC) este instalat din pachete cu comanda:

Pkg_add -r tightvnc

2. Conectarea unui client VNC la un computer la distanță
Pentru a conecta un client VNC la un computer la distanță, trebuie să specificați adresa lui IP sau numele DNS și numărul de afișare (implicit, :0) sau numărul portului TCP (implicit, 5900). Dacă serverul VNC necesită autorizare, atunci când se conectează la el, clientul VNC va cere o parolă. Vă rugăm să rețineți că parola de acces la serverul VNC nu este asociată cu niciun cont ( cont user) pe un computer la distanță și servește numai pentru a restricționa accesul la afișajul serverului VNC.

După stabilirea unei conexiuni și deschiderea ecranului, în funcție de setările serverului VNC, poate fi necesară autorizarea utilizatorului pentru a server virtual sau poate fi deschisă o sesiune de lucru care rulează deja a unui utilizator.

Deoarece mai multe servere VNC pot rula pe un computer în același timp, parametrul este folosit pentru a le separa numărul afișat. De exemplu, un server VNC poate rula pe display:0, altul pe display:1. Fiecare număr de afișare corespunde numărului portului TCP pe care serverul VNC acceptă conexiuni. Numărul portului de afișare se obține prin adăugarea numărului de afișare la numărul de bază portul - 5900. Display:0 corespunde portului TCP 5900, display:1 - portul 5901.

3. Deconectarea clientului VNC de la computerul de la distanță
La închiderea ferestrei client VNC sau după părăsirea mediului folosind instrumente desktop, în funcție de setările serverului VNC, sesiunea de lucru a utilizatorului se poate închide cu toate programele în uz oprite sau poate continua să lucreze și să fie disponibil din nou atunci când se conectează la serverul VNC din nou.
4. Reglarea clientului VNC
O cantitate mare de informații transmise pe ecran implică cerințe crescute pentru viteza canalului - către acesta lățime de bandăși timpul de transmisie a pachetelor. Presiunea de capacitate duce la întârzieri incomode când mari schimbari informațiile afișate pe ecran - deschiderea de noi ferestre, derularea etc. În special întârzieri mari va apărea la afișarea fotografiilor și a altor imagini sau elemente de interfață care au număr mare culori si forme complexe.

Parametrul principal care afectează cantitatea de date transmise este algoritmul de codificare a graficelor transmise. Pentru a reduce volumul și, în consecință, a accelera munca, se recomandă utilizarea algoritmilor Tight, ZLib, ZRLE - în comparație cu datele necomprimate (Raw), acestea oferă o compresie de zeci de ori, încărcând semnificativ procesorul. Acești algoritmi de codare oferă lucru confortabil chiar și pe canale cu o viteză de 256-512 Kbps.

Pentru a reduce cantitatea de informații transmise prin rețea, puteți seta și un nivel ridicat de compresie (Nivel compresie, Valoare compresie), nivel scăzut Calitate JPEG(Calitate JPEG) și activați modul de reducere a culorii (-bgr233, Culori restricționate). Cel mai mare efect al acestora, cu o scădere vizibilă a calității imaginii, este asigurat de modul de reducere a numărului de culori - volumul informațiilor transmise este redus de 1,5-3 ori, respectiv, afișarea pe ecran este accelerată cu 1,5. -De 3 ori.

JPEG este folosit de algoritmul de codificare Tight pentru a comprima zonele ecranului care conțin fotografii și alte imagini complexe cu un număr mare flori. Utilizarea Tight+JPEG reduce cantitatea de date transmise de 2-5 ori. Alți algoritmi de codare JPEG nu sunt acceptați.

1. Meniul drop-down „System -> Options”

Volumul datelor transmise și viteza de afișare pe canal este de 1 Mbit/sec la deschiderea meniului derulant „Sistem -> Parametri” (meniul este evidențiat cu o linie punctată verde în figură):

5. Probleme comune
Nu se poate conecta la serverul VNC
Trebuie verificat:
  1. există acces la internet;
  2. dacă serverul virtual răspunde la ping-uri;
  3. dacă serverul VNC rulează pe serverul virtual;
  4. există un firewall pe parcurs care blochează accesul la portul TCP al serverului VNC;
  5. Numărul de afișare sau portul TCP al serverului VNC este specificat corect (numărul portului = 5900 + numărul afișajului).
Funcționare lentă printr-un canal destul de rapid
Dacă clientul VNC nu poate fi de acord cu serverul VNC cu privire la utilizarea unui algoritm de codificare grafică cu compresie de date, se selectează algoritmul implicit - Raw, care transferă datele fără compresie. De asemenea, codificare fără compresie sau cu nivel scăzut compresia poate fi selectată automat de clientul VNC atunci când lucrează prin rapid retea locala. Această problemă poate fi rezolvată forțând algoritmul de codificare cu nivel înalt compresie - ZLib, ZRLE, Tight.

Cu toate acestea, pentru unele combinații de client și server, această soluție poate să nu fie utilă din cauza erorilor în negocierea algoritmului de codificare. De exemplu, un client TightVNC cu un server RealVNC poate funcționa adesea doar cu codare Raw. Soluția în acest caz este schimbarea clientului VNC sau a serverului VNC.

Cum să vă ajutați utilizatorii să acceseze un sistem Linux cu mai mulți utilizatori de oriunde

Arhitectura serverului VNC și X

Interfața grafică cu utilizatorul (GUI) în Linux® folosește X Window System (abreviat X). X este o interfață neobișnuită în mai multe privințe, în special este nativă interfata de retea. server X, în esență, este un program de server de rețea. Programele server de rețea oferă programelor client acces la resursele locale, iar acest lucru este valabil și pentru serverul X. Particularitatea este că, în cazul serverului X, „resurse locale” sunt afișajul, tastatura și mouse-ul cu care lucrează utilizatorul. În cea mai comună configurație, programele client X rulează pe același computer cu serverul. Astfel, LibreOffice, GNU Image Manipulation Program (GIMP) sau alte programe sunt clienți X care folosesc protocoale de rețea X pentru a accepta date de la utilizator și pentru a afișa rezultatele pe același computer.

Cu toate acestea, atunci când X este utilizat într-o rețea, utilizatorul stă la un computer server X, iar clienții X sunt programe care trebuie rulate pe un alt computer. Această configurație necesită o secundă protocol de rețea, stabilirea unei conexiuni. Acest al doilea protocol ar putea fi telnet, Secure Shell (SSH) sau X Display Manager Control Protocol (XDMCP). Serverul pentru acest protocol de conectare la distanță rulează pe computerul client X, iar clientul de conectare la distanță rulează pe computerul server X. Serverul de conectare la distanță rulează clienți X, care la rândul lor stabilesc o conexiune la serverul X. ilustrează această interacțiune. Săgețile punctate indică începutul sesiunii. (Cu XDMCP, clientul XDMCP este încorporat în programul server X.)

Figura 1: Remote Access X necesită un client și un server pe ambele computere

Această configurație funcționează excelent pe multe rețele locale, dar nu este lipsită de dezavantaje. De exemplu, necesită inițierea unui protocol de rețea bidirecțional, care poate fi împiedicat de un firewall sau de un router NAT (Network Address Translation). (SSH înlătură acest obstacol permițând tunelarea sesiunilor X.) În plus, deși există servere X pentru majoritatea platformelor, acestea nu sunt instalate de obicei pe computerele care rulează Control Windows®. Din aceste și alte motive, mulți oameni preferă să folosească un alt protocol, Remote Frame Buffer (RFB), care este implementat în Programe virtuale Network Computing (VNC).

VNC este un instrument multiplatform care permite accesul de la distanță la Linux, UNIX®, Mac OS X, Windows și alte sisteme de la orice tip de client. Utilizatorul se așează la computerul client și accesează telecomanda computer server. ÎN Server Linux VNC fie oglindește conținutul ecranului serverului X local pe un computer la distanță, fie îl conține pe al său propriul server X, capabil să ruleze independent de orice controlează ecranul local. Rezultatul este prezentat în Figura 2. Din nou, săgeata punctată indică începutul sesiunii. Această configurație elimină necesitatea inversării conexiune la rețea, și deoarece clienții și serverele VNC sunt disponibile pentru multe sisteme de operare, același program client oferă acces la orice server.

Figura 2. Serverul VNC include un server X cu care poate comunica programe locale prin clientul X

Dezavantajul VNC este că autentificarea RFB se bazează pe parole fără nume de utilizator. Deci, fiecare utilizator trebuie să înceapă o sesiune independentă de server VNC și să stabilească o conexiune la acea instanță VNC specificând numărul corect de port. Această cerință este tolerabilă pentru un sistem cu un singur utilizator, dar provoacă inconveniente extreme atunci când lucrați pe un computer cu mai mulți utilizatori.

Pentru a rezolva această problemă, puteți combina aceste două abordări: reconfigurați serverul XDMCP local, astfel încât să ajute serverul X încorporat în VNC să furnizeze autentificarea multi-utilizator lipsă. (Configurația rezultată este ilustrată în Figura 3. Săgeata punctată indică începutul sesiunii.) Acum, atunci când utilizatorii VNC la distanță accesează computerul server VNC, aceștia pot introduce nume de utilizator și parole de acces pentru propriile sesiuni VNC unice, astfel încât computerul poate fi folosit atâta timp cât orice utilizator.

Figura 3: Adăugarea XDMCP la o configurație VNC oferă o flexibilitate sporită

Configurarea unui server VNC

Există mai multe moduri de a rula VNC, inclusiv utilizarea de scripturi, legarea VNC la mediul desktop folosind instrumente de birouși folosind xinetd pentru a asculta conexiunile VNC. Această ultimă abordare este descrisă aici, deoarece permite VNC să ruleze într-un mod care poate utiliza un server XDMCP. Înainte de a trece la instrucțiunile pentru configurarea VNC pentru a rula prin xinetd, trebuie să selectați un server VNC.

Selectarea unui server VNC

Există mai multe programe server VNC. (Vezi secțiunea). Unele dintre cele mai populare sunt TightVNC, TigerVNC și RealVNC. Acest articol folosește TightVNC ca exemplu. Din păcate, detaliile de configurare sunt specifice atât serverului, cât și distribuției, așa că instrucțiunile de aici vor trebui adaptate software-ului dvs.

Instalarea xinetd

Multe distribuții instalează în mod implicit superserverul xinetd, dar nu toate. Deoarece metoda descrisă aici presupune utilizarea xinetd, trebuie să instalați xinetd dacă nu este deja instalat. Pe majoritatea distribuțiilor, xinetd poate fi instalat folosind un manager de pachete, de exemplu apelând apt-get install xinetd pe distribuțiile bazate pe Debian sau zypper install xinetd pe openSUSE.

De asemenea, poate fi necesar să configurați procesul de pornire a xinetd. De obicei, puteți utiliza scriptul de pornire System V (SysV) pentru o pornire unică:

# /etc/init.d/xinetd start

Pentru a configura xinetd să pornească automat la pornirea computerului, trebuie să știți cum funcționează scripturile de pornire ale distribuției dvs. De obicei, acest lucru se face cu un utilitar precum chkconfig (utilizat pe Fedora, openSUSE și distribuțiile aferente), update-rc.d (utilizat pe Debian și distribuțiile aferente) sau rc-update (utilizat pe Gentoo), ceva de genul acesta:

# chkconfig xinetd on # update-rc.d xinetd enable # rc-update add xinetd default

Intră numai unul din aceste comenzi sau găsiți echivalentul pentru distribuția dvs.

Rețineți că xinetd poate să nu pornească dacă nu este configurat să ruleze niciun serviciu. Deci, poate fi necesar să așteptați să-l rulați până când ați configurat xinetd pentru a vă gestiona serverul VNC.

Configurarea xinetd

Serverele care urmează să fie gestionate de xinetd plasează fișierele de configurare în directorul /etc/xinetd.d. Astfel, pentru a configura xinetd să gestioneze VNC, trebuie să creați sau să editați un fișier cu tipul de nume /etc/xinetd.d/vnc.(Pe unele distribuții, cum ar fi openSUSE, pachetul de server VNC instalează un astfel de fișier.) Lista 1 arată un exemplu.

Listare 1. Exemplu de configurare VNC pentru xinetd
service vnc ( disable = no socket_type = stream protocol = tcp wait = no user = nobody server = /usr/bin/Xvnc server_args = -inetd -once -query localhost -geometry 1024x768 -depth 16 type = port NELISTED = 5900)

Această intrare specifică mai multe opțiuni xinetd, dintre care majoritatea ar trebui lăsate așa cum sunt. Mai jos sunt enumerate setările care ar putea trebui configurate.

  • serviciu. VNC cu parametri diferiți poate fi rulat pe mai multe porturi, dar în acest caz, în prima linie a Lista 1, trebuie să dați VNC un nume de serviciu separat pentru fiecare port.
  • server. Această setare trebuie modificată pentru a indica sistemul binar principal al serverului VNC, care este de obicei numit Xvnc.
  • server_args. Aproape sigur veți dori să modificați unele dintre aceste valori, așa cum este descris mai jos.
  • port. VNC folosește numerele de porturi 5900 și mai sus. Puteți porni serverul cu sensuri diferite parametri prin diferite porturi. În acest caz, fiecărei instanțe trebuie să i se aloce propriul număr de port.

Cea mai dificilă parte a instalării xinetd este setarea argumentelor serverului. Puteți folosi argumentele prezentate în Lista 1 ca model, schimbând unele dintre ele.

  • -interogare localhost . Această opțiune specifică că serverul VNC X ar trebui să verifice sistemul localhost pentru autentificare XDMCP. Poate fi schimbat dacă doriți să utilizați un computer ca traducător pentru a accesa programele altuia.
  • -geometrie 1024x768 . Această opțiune setează rezoluția virtuală a sesiunii VNC. Rețineți că această rezoluție nu trebuie să se potrivească cu cea a unui server X obișnuit care rulează pe mașina server. Puteți crea mai multe intrări care rulează la rezoluții diferite, astfel încât utilizatorii să se poată conecta la serverul VNC la rezoluția care se potrivește nevoilor lor. sisteme locale.
  • -adâncime 16 . Acest parametru setează adâncimea culorii. Cu cât valoarea este mai mică, cu atât afișajul se actualizează mai repede, dar pe un ecran cu un număr mare culorile pot fi distorsionate. Gamă valori acceptabile de la 2 la 32.

Există multe alte opțiuni, iar unele dintre ele depind de serverul VNC. Consultați documentația serverului VNC.

Configurarea unui server XDMCP

Majoritatea distribuțiilor Linux își configurează serverele XDMCP pentru a gestiona doar afișajul local. Pentru a activa accesul la distanță, trebuie să reconfigurați serverul XDMCP pentru a accepta cereri de acces de la un server VNC care rulează pe același computer. Detaliile depind de serverul XDMCP. Cele trei cele mai utilizate pe Linux sunt GNOME Display Manager (GDM), Light Display Manager (LightDM) și KDE Display Manager (KDM). Alte servere XDMCP, cum ar fi XDM, necesită setări diferite decât cele descrise aici. În orice caz, după reconfigurarea serverului XDMCP, va trebui să-l reporniți.

Editarea fișierului de configurare XDMCP

Dacă nu sunteți sigur ce server XDMCP este utilizat pe sistemul dvs., puteți determina acest lucru vizualizând lista proceselor folosind linia dm, de exemplu:

$ ps axe | grep dm 929 ? Ss 0:00 /usr/bin/kdm 962 tty7 Ss+ 0:19 /usr/bin/Xorg -br:0 vt7 -nolisten tcp -auth \ /var/lib/xdm/authdir/authfiles/A:0-pp4shb 30157 puncte/3 S+ 0:00 grep --color=auto dm

Prima linie a acestui tipărit arată că KDM rulează, așa că pentru ca VNC să folosească XDMCP, trebuie să editați fișierul de configurare al serverului respectiv. Fișierele de configurare ale majorității programelor XDMCP urmează același format. Acestea conțin secțiuni cu nume date între paranteze drepte, cum ar fi . Liniile de după numele secțiunii specifică parametrii folosind un semn egal, de exemplu: enable=true . Tabelul 1 listează numele fișierelor de configurare, numele secțiunilor și parametrii care trebuie definiți pentru ca XDMCP să funcționeze pe mai multe servere Linux XDMCP comune.

Tabelul 1. Parametrii care permit XDMCP să accepte VNC pentru diferite servere XDMCP

Secțiunea XDMCP din fișierul de configurare poate lipsi complet. Dacă este prezent, poate dezactiva în mod explicit suportul XMDCP, poate conține opțiuni comentate sau poate fi necompletat. Indiferent de starea inițială a fișierului, trebuie să vă asigurați că secțiunea XDMCP este prezentă și că suportul este activat. De exemplu, să ne uităm la configurarea KDM pentru a activa XDMCP:

Enable=true

Unele distribuții vă permit să activați măsuri de securitate suplimentare pe care poate fi necesar să le slăbiți. Unul dintre ele este un firewall. Scripturile de firewall sunt de obicei specifice distribuției, deci consultați documentația sistemului dumneavoastră pentru instrucțiuni despre configurarea unui firewall. Doriți ca localhost să aibă acces la portul 177 și clienții VNC să acceseze portul 5900 (sau orice alte porturi care sunt utilizate pentru VNC).

OpenSUSE are fișier suplimentar configurație, care controlează unele tipuri de acces, inclusiv accesul XDMCP: /etc/sysconfig/displaymanager. Deschideți acest fișier în editor de text si gasesti rândul următor:

DISPLAYMANAGER_REMOTE_ACCESS="nu"

Schimbați valoarea acestui parametru la „da”. Dacă lăsați „nu” , fereastra de conectare la serverul XDMCP nu va fi afișată atunci când vă conectați la un server VNC. În majoritatea distribuțiilor această schimbare Nu necesar: acest fișier folosește doar openSUSE.

Repornirea serverului XDMCP

Odată ce serverul XDMCP este configurat să accepte conexiuni la distanță, acesta trebuie repornit. Pe distribuțiile care pornesc X printr-un fișier init SysV, cum ar fi Debian și Gentoo, acest lucru se poate face folosind opțiunea de repornire:

# /etc/init.d/gdm reporniți

Pe un sistem care folosește runlevel pentru a rula X, cum ar fi Fedora sau openSUSE, trebuie să mergeți la runlevel modul text(de obicei 3) și apoi reveniți la nivelul GUI (de obicei 5):

# telinit 3 # telinit 5

Rețineți că oricare dintre abordări vă deconectează de la X, așa că salvați orice lucru pe care ați făcut-o în sesiunea dvs. X înainte de a continua.

Testare și depanare

Acum vă puteți conecta de pe un computer la distanță folosind un client VNC. Majoritatea distribuțiilor Linux includ comanda vncviewer, astfel încât să puteți tasta:

vncviewer

Pentru a vă autentifica nume la distanță prin VNC. Dacă VNC este configurat și funcționează corect, rezultatul va fi ceva asemănător cu Figura 4. Dacă configurați mai multe sesiuni VNC pe diferite porturi, puteți specifica numărul sesiunii VNC trecându-l ca parte a numelui de gazdă. Introduceți:

vncviewer:3

Pentru a vă conecta la sesiunea 3 (prin portul 5903).

Figura 4. Când este configurat să funcționeze cu XDMCP, VNC oferă promptul Linux obișnuit

Dacă nu vedeți ecranul de conectare XDMCP când rulați acest test, va trebui să depanați. Mai jos sunt câteva recomandări.

  • Dacă vncviewer raportează că conexiunea a fost refuzată, cel mai probabil înseamnă că superserverul de pe computerul server VNC nu este configurat corect. Verificați configurația xinetd și încercați să reporniți superserverul. De asemenea, este posibil ca firewall-ul să blocheze accesul la computerul serverului VNC.
  • Dacă clientul VNC pornește și se conectează la server, dar vedeți doar ecran gri cu un cursor care poate fi mutat, problema este cel mai probabil cu configurația serverului XDMCP. Verificați setările de mai sus și reporniți serverul XDMCP.
  • Examinați fișierele jurnal de evenimente așa cum ați proceda în mod normal la depanare. Poate fi necesar să căutați toate fișierele jurnal din directorul /var/log folosind link-uri către xinetd, serverul XDMCP și serverul VNC.

Probleme de securitate VNC

RFB nu este un protocol sigur; Majoritatea clienților și serverelor VNC nu își criptează datele. (VNC criptează propriile parole, dar abordarea descrisă aici nu folosește aceste parole.) Fiți atenți când alegeți cum și unde să instalați VNC. Dacă doriți să utilizați VNC în rețea nesecurizată, sunt posibile trei variante:

  • utilizați virtual rețea privată(VPN);
  • protocol tunel prin SSH;
  • Utilizați o opțiune VNC care acceptă criptarea, cum ar fi TigerVNC cu capacitatea de criptare Transport Layer Security.

Când activați ferestrele de conectare VNC așa cum este descris în acest articol, lumea exterioară Cel puțin două porturi sunt deschise (VNC și XDMCP). Ambele porturi pot fi restricționate de regulile firewall pentru a minimiza riscul de abuz. Rețineți că portul XDMCP (UDP 177) ar trebui să fie deschis doar pentru localhost, astfel încât regula de firewall pentru acesta poate fi destul de restrictivă.

Concluzie

În general, conectarea VNC și XDMCP este o metodă utilă de a oferi autentificare de la distanță cu o interfață grafică de utilizator pentru computere Linux cu mai mulți utilizatori. Această metodă are avantaje față de aplicarea directă a XDMCP într-un mediu multiplatform sau atunci când există probleme cauzate de un firewall sau NAT. Pe computerele cu mai mulți utilizatori, este de preferat metodelor mai comune de conectare directă VNC. Există probleme de siguranță de luat în considerare atunci când utilizați această metodă. Fiți pregătit să configurați reguli de firewall pentru a limita accesul extern nedorit și utilizați criptarea dacă datele circulă printr-o rețea neîncrezătoare.

Deși Raspberry Pi funcționează grozav cu un monitor sau un televizor care utilizează un cablu HDMI, adesea apar situații când nu este necesar un monitor și este suficient să vizualizați desktopul de la distanță de pe alt computer. În acest caz, VNC ne va ajuta. Apropo, majoritatea sarcinilor, precum programarea sau configurarea, pot fi rezolvate de la distanță sistem de operare.
Ce ne trebuie?

Se presupune că Raspberry Pi are un sistem de operare instalat ( versiune speciala Linux distribuție Debian), iar Windows 7 este instalat pe computerul de la distanță Pentru a face acest lucru, trebuie să instalați un fel de client VNC pentru Windows, de exemplu UltraVNC - este destul de convenabil și gratuit.
Pagina de descărcare UltraVNC

Odată ce serverul VNC este configurat și rulează, clientul UltraVNC va fi suficient pentru a se conecta de la distanță la Raspberry Pi. Cu toate acestea, dacă vom configura și VNC de la distanță, vom avea nevoie suplimentar Client SSH- program gratuit PuTTY.
Pagina de descărcare PuTTY

Ultimul lucru de care avem nevoie este adresa IP a lui Raspberry Pi. Dacă i se atribuie o adresă statică, atunci aceasta este suficientă. Dacă știi cum să cauți adresa IP pe router, atunci și asta va fi suficient. Dacă adresa nu este cunoscută și nu există nicio modalitate de a o căuta, atunci veți avea nevoie de un program pentru a scana adrese IP în rețea. Advanced IP Scanner este destul de potrivit pentru aceasta; va scana rețeaua locală și va afișa o listă cu toate dispozitivele indicând adresa IP a fiecăruia. Cel mai adesea, determinarea adresei Raspberry Pi nu este dificilă în listă are numele „raspberrypi” sau similar.
Pagina de descărcare Advanced IP Scanner

În cazul unui router, de cele mai multe ori este suficient să vizualizați lista de dispozitive conectate poate fi identificat în același mod descris mai sus; Din păcate, nu este posibil să descriem mai detaliat cum să faceți acest lucru în cadrul acestui articol - toate routerele sunt ușor diferite unele de altele.

Lansarea SSH pe Raspberry Pi

Să începem cu ce este SSH. Acesta este un program care poate fi rulat în sala de operație sistem Linuxși vă permite să accesați de la distanță consola (linia de comandă) a Raspberry Pi. Cu ajutorul acestuia, puteți rula orice program sau puteți executa o comandă pe linia de comandă de la distanță folosind clientul SSH - PuTTY.

În mod implicit, serverul SSH este dezactivat în Raspbian, așa că va trebui să îl porniți mai întâi. Pentru a face acest lucru, va trebui să conectați Raspberry Pi la un monitor sau televizor și să îl conectați la Tastatura USB. Există două moduri de a porni un server SSH. Unul mai simplu este folosirea programului raspi-config. Pentru a face acest lucru, trebuie să tastați comanda și să selectați „ ssh Activați sau dezactivați serverul ssh» în meniul propus:

O altă modalitate este să introduceți comanda sudo /etc/init.d/ssh start ca mai jos:

Diferența este că în prima metodă, folosind programul raspi-config, nu numai că lansăm serverul SSH, dar îl și adăugam la pornirea automată a sistemului de operare, ceea ce poate să nu fie foarte bun dacă serverul SSH nu este nevoie de toate timpul. În al doilea caz, îl rulăm doar până la următoarea repornire.

În cele din urmă, vom descrie o modalitate de a rula un server SSH fără a utiliza un monitor sau tastatură. Pentru a face acest lucru, trebuie să scoateți cardul SD cu Rasbian instalat, să îl introduceți în cititorul de carduri și să îl conectați la un computer care rulează Windows.
Cardul SD Raspberry Pi are o partiție mică formatată în sistemul Fat32 pe care Windows o înțelege. Această secțiune conține câteva fișiere de configurare. Conținutul cardului SD arată astfel:

Pentru a vă asigura că serverul SSH pornește, trebuie să redenumiți fișierul boot_enable_ssh.rc în boot.rc:

Acum tot ce trebuie să faceți este să introduceți cardul SD înapoi în Raspberry Pi și să îl porniți. Serverul SSH va fi pornit!

Conectați-vă prin SSH

După cum am menționat mai sus, pentru a vă conecta la Raspberry Pi de la distanță folosind VNC, trebuie mai întâi să porniți serverul VNC. Mai jos vă arătăm cum să efectuați această procedură și de la distanță. Pentru a face acest lucru veți avea nevoie de un client SSH - PuTTY. După descărcarea programului PuTTY, trebuie doar să rulați fișierul rezultat; Se va deschide următoarea fereastră:

În câmpul Nume gazdă, introduceți adresa IP găsită la început. Apoi faceți clic pe butonul Deschidere. Odată ce PuTTY se conectează la Server SSH, se va deschide o fereastră de terminal și va solicita acreditările (utilizatorul pi cu parola implicită raspberry):

Odată ce au fost introduse acreditările corecte, va apărea un prompt de comandă. Aici puteți introduce orice comandă Raspberry Pi:

Configurarea unui server VNC prin SSH

Acum că conexiunea este stabilită, trebuie să porniți serverul VNC. Dacă porniți serverul pentru prima dată, atunci cel mai probabil trebuie să finalizați mai întâi instalarea. Se presupune că Raspberry Pi are acces la Internet, deoarece va fi necesar pentru a instala serverul VNC. Pentru a face acest lucru, executați comanda:
sudo apt-get install tightvncserver
După cum sa menționat mai sus, PuTTY execută comenzile introduse direct pe Raspberry Pi, astfel încât comanda introdusă mai sus va instala serverul VNC pe computer.
Vă rugăm să rețineți că în timpul instalării veți fi întrebat dacă instalați programul fără verificare (Instalați aceste pachete fără verificare?). Va trebui să răspundeți „y” la această întrebare.

După finalizarea instalării, serverul VNC trebuie pornit. Pentru a face acest lucru, utilizați comanda vncserver:1 -geometry 1280×800 -adâncime 16 -pixelformat rgb565

Această comandă a pornit serverul VNC! ÎN în acest caz,, asta înseamnă că rulează o sesiune virtuală X (o reprezentare virtuală a desktop-ului Raspberry Pi), exact la fel ca comanda startx la pornirea cu un monitor conectat. Acum, când lansați clientul VNC și vă conectați, veți fi conectat la acest desktop virtual particular.

Cele mai multe parte importantă al acestei comenzi - parametru :1 . Specifică numărul portului pe care va fi lansat procesul VNC. Numărul portului poate fi orice, dar trebuie să-l amintiți, veți avea nevoie de el atunci când vă conectați. Altul parametru important, aceasta este rezoluția (în acest caz dimensiunea) desktopului virtual. Îl puteți specifica în orice fel, dar nu trebuie să specificați mai mult de rezoluție reală computerul de pe care se realizează accesul la distanță.

Când porniți VNC pentru prima dată, serverul vă va cere să introduceți o parolă. Această parolă va fi necesară atunci când vă conectați la un desktop de la distanță.

A doua parolă pe care o va cere serverul VNC este o parolă de numai vizualizare. Dacă introduceți această parolă la conectare, veți putea vedea desktopul virtual, dar tastatura și mouse-ul vor fi dezactivate.

Conectați-vă folosind UltraVNC

După pornirea serverului VNC, ultimul lucru de făcut este să vă conectați la acesta de la distanță. Lansați UtlraVNC, introduceți adresa IP, numărul portului (1) și faceți clic pe butonul Conectare.
Și acum - totul este gata!

Notă importantă! Imagine birou la distanță poate diferi în funcție de ce acreditări a fost lansat vncserver. Când rulați sub acreditările unui utilizator obișnuit, de ex. după cum sa menționat mai sus, desktopul va arăta ca de obicei. Pe de altă parte, când rulați vncserver ca root folosind comanda sudo, desktopul va arăta ca imaginea de mai jos. Apropo, același lucru este valabil și pentru comanda startx atunci când lucrați cu Raspberry Pi direct (local).

Vă prezentăm atenției curs nou din echipa The Codeby- „Testarea de penetrare a aplicațiilor web de la zero”. Teorie generală, pregătirea mediului de lucru, fuzzing pasiv și amprentare, fuzzing activ, Vulnerabilități, Post-exploatare, Instrumente, Inginerie socială și multe altele.


Virtual Network Computing (VNC) permite accesul partajat alți utilizatori la distanță către mediul desktop localhost prin rețea. Pentru a oferi acces la desktop, un server VNC trebuie să ruleze pe gazda locală și utilizatorii șterși conectați-vă la serverul VNC folosind un client de vizualizare VNC.

În acest tutorial voi explica cum să configurați un server VNC pe Linux. Pentru aceasta, voi folosi vino, un software de server VNC pentru mediul desktop GNOME.

Pentru a instala serverul VNC vino pe o mașină cu Debian, Ubuntu sau Linux Mint:

$ sudo apt-get install vino

Pentru a instala serverul vino VNC pe o mașină cu Fedora, CentOS sau RHEL:

$ sudo yum install vino

După instalare, puteți rula vino și activa serverul VNC introducând comanda vino-preferences.

$vino-preferinte

Comanda de mai sus va deschide fereastra de setări vino pentru a accesa desktopul, așa cum se arată mai jos. În fereastra în care se află „Partajare”, bifați caseta pentru a permite altor utilizatori să vă vadă desktopul. De asemenea, puteți seta o parolă VNC. Când setările sunt finalizate, această fereastră poate fi închisă.

În teorie, utilitarul vino-preferences în sine ar trebui să pornească serverul VNC. Dacă serverul VNC nu rulează dintr-un motiv oarecare, puteți porni manual serverul VNC după cum urmează.

$ /usr/lib/vino/vino-server &

Pe cel mai recent Linux Se știe că Mint cu desktopul Cinnamon nu are preferințe pentru vino. Pentru a activa configurarea serverului VNC în Mint pe desktop-ul Cinnamon, utilizați în schimb dconf-editor, așa cum este descris aici.

Puteți verifica dacă vino rulează tastând următoarea comandă.

$ sudo netstat -pl | grep vino tcp 0 0 *:5900 *:* LISTEN 3246/vino-server tcp6 0 0 [::]:5800 [::]:* LISTEN 3246/vino-server tcp6 0 0 [::]:5900 [::] ]:* ASCULTA 3246/vino-server

După cum puteți vedea mai sus, vino-server rulează Port TCP cu numerele 5800 și 5900. Puteți utiliza orice software cu funcție de client VNC pentru a vă conecta la serverul VNC.

Dacă serverul VNC este configurat astfel încât trebuie să confirmați fiecare acces VNC la desktop, atunci veți vedea următorul mesaj pop-up de fiecare dată când este primită o solicitare de conectare VNC. Numai după ce activați VNC clientul VNC va putea accesa desktop-ul dvs.