How To Install and Configure VNC Remote Access for the GNOME Desktop on CentOS 7

Introduction

VNC lub Virtual Network Computing jest niezależnym od platformy protokołem, który umożliwia użytkownikom łączenie się ze zdalnym systemem komputerowym i korzystanie z jego zasobów za pomocą graficznego interfejsu użytkownika (GUI).

To jak zdalne sterowanie aplikacją: naciśnięcia klawiszy lub kliknięcia myszą komputera klienckiego są przesyłane przez sieć do komputera zdalnego. VNC umożliwia również współdzielenie schowka pomiędzy obydwoma komputerami. Jeśli pochodzisz z serwera Microsoft Windows, VNC jest bardzo podobny do Remote Desktop Service, z wyjątkiem tego, że jest również dostępny dla OS X, Linux i innych systemów operacyjnych.

Jak wszystko inne w świecie sieci, VNC opiera się na modelu klient-serwer: Serwer VNC działa na zdalnym komputerze – twoim Droplecie – który obsługuje przychodzące żądania klienta.

Cele

W tym poradniku dowiemy się, jak zainstalować i skonfigurować serwer VNC w systemie CentOS 7. Zainstalujemy serwer TigerVNC, który jest dostępny za darmo w repozytorium TigerVNC GitHub.

Aby zademonstrować, jak działa VNC, zainstalujemy również pulpit GNOME na serwerze CentOS. Utworzymy dwa konta użytkowników i skonfigurujemy dla nich dostęp VNC. Następnie przetestujemy ich łączność ze zdalnym pulpitem, a na koniec dowiemy się, jak zabezpieczyć zdalne połączenie przez tunel SSH.

Wymagania wstępne

Polecenia, pakiety i pliki pokazane w tym poradniku zostały przetestowane na minimalnej instalacji CentOS 7. Zalecamy następujące elementy:

  • Dystro: CentOS 7, 64-bit
  • Wymagania dotyczące zasobów: Droplet z 2 GB RAM
  • Aby podążać za tym samouczkiem, powinieneś używać użytkownika sudo. Aby zrozumieć, jak działają uprawnienia sudo, można odwołać się do tego samouczka DigitalOcean

Ostrzeżenie: Nie należy uruchamiać żadnych poleceń, zapytań lub konfiguracji z tego samouczka na produkcyjnym serwerze Linux. Może to spowodować problemy z bezpieczeństwem i przestoje.

Krok 1 – Tworzenie dwóch kont użytkowników

Po pierwsze, utworzymy dwa konta użytkowników. Te konta będą zdalnie łączyć się z naszym serwerem CentOS 7 z klientów VNC.

  • joevnc
  • janevnc

Uruchom następujące polecenie, aby dodać konto użytkownika dla joevnc:

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

Następnie uruchom polecenie passwd, aby zmienić hasło joevnc:

sudo passwd joevnc

Wyjście poprosi nas o nowe hasło. Po jego podaniu, konto będzie gotowe do logowania:

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

Następnie utwórz konto dla janevnc:

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

Ustal hasło dla janevnc:

sudo passwd janevnc

Krok 2 – Instalacja pulpitu GNOME

Teraz zainstalujemy pulpit GNOME. GNOME to wspólny wysiłek: jest to zbiór wolnego i otwartego oprogramowania, które tworzy bardzo popularne środowisko graficzne. Istnieją inne środowiska graficzne, takie jak KDE, ale GNOME jest bardziej popularne. Nasi użytkownicy VNC będą używać GNOME do interakcji z serwerem z poziomu pulpitu:

sudo yum groupinstall -y "GNOME Desktop"

Zależnie od szybkości sieci, może to potrwać kilka minut.

Po zainstalowaniu grupy pakietów należy ponownie uruchomić serwer:

sudo reboot

Rozwiązywanie problemów – Serwer utknął w fazie rozruchu

Zależnie od tego, jak został skonfigurowany serwer, po uruchomieniu maszyna może pozostać w fazie rozruchu, wyświetlając komunikat taki jak ten:

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

Aby ominąć ten problem, należy nacisnąć 1 (przeczytaj licencję), następnie 2 (zaakceptuj licencję), a potem C (kontynuuj). Może być konieczne naciśnięcie C dwa lub więcej razy. Obrazek poniżej to pokazuje:

Jeśli nie widzisz tego błędu i proces uruchamiania przebiega bezproblemowo, tym lepiej – możesz przejść do następnego kroku.

Krok 3 – Instalacja serwera TigerVNC

TigerVNC to oprogramowanie, które pozwoli nam nawiązać połączenie zdalnego pulpitu.

Instalacja serwera Tiger VNC:

sudo yum install -y tigervnc-server

Powinno to wyświetlić dane wyjściowe jak poniżej:

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!

Teraz mamy zainstalowany serwer VNC i pulpit GNOME. Utworzyliśmy także dwa konta użytkowników do łączenia się przez VNC.

Krok 4 – Konfiguracja usługi VNC dla dwóch klientów

Serwer VNC nie uruchamia się automatycznie, gdy jest zainstalowany po raz pierwszy. Aby to sprawdzić, uruchom następujące polecenie:

sudo systemctl status vncserver@:.service

Wyjście będzie takie:

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

Możesz również uruchomić to polecenie:

sudo systemctl is-enabled [email protected]

To powinno pokazać wyjście takie jak to:

disabled

Więc dlaczego jest wyłączony? To dlatego, że każdy użytkownik będzie uruchamiał oddzielną instancję demona usługi VNC. Innymi słowy, VNC nie działa jako pojedynczy proces, który obsługuje każde żądanie użytkownika. Każdy użytkownik łączący się przez VNC będzie musiał uruchomić nową instancję demona (lub administrator systemu może to zautomatyzować).

CentOS 7 używa demona systemd do inicjowania innych usług. Każda usługa, która natywnie działa pod systemd ma plik jednostki usługi, który jest umieszczony w katalogu /lib/systemd/system przez instalator yum. Procesy, które są uruchamiane automatycznie podczas startu systemu, mają odnośnik do tego pliku jednostki usługowej umieszczony w katalogu /etc/systemd/system/.

W naszym przypadku ogólny plik jednostki usługowej został utworzony w katalogu /lib/systemd/system/, ale nie utworzono odnośnika w /etc/systemd/system/. Aby to sprawdzić, wykonaj następujące polecenia:

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

Powinieneś zobaczyć:

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

Potem sprawdź pod /etc/systemd/system/:

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

Ten nie istnieje:

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

Więc, pierwszym krokiem jest uruchomienie dwóch nowych instancji serwera VNC dla naszych dwóch użytkowników. Aby to zrobić, będziemy musieli utworzyć dwie kopie pliku jednostki usługi VNC pod adresem /etc/system/system. W poniższym fragmencie kodu tworzymy dwie kopie o dwóch różnych nazwach:

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

Dlaczego więc dodaliśmy dwie cyfry (wraz z dwukropkiem) w nazwach kopiowanych plików?

Again, to wraca do koncepcji poszczególnych usług VNC. VNC sam w sobie działa na porcie 5900. Ponieważ każdy użytkownik będzie uruchamiał swój własny serwer VNC, każdy użytkownik będzie musiał łączyć się przez osobny port. Dodanie numeru w nazwie pliku mówi VNC, aby uruchomić tę usługę jako podport 5900. Tak więc w naszym przypadku usługa VNC joevnc będzie działać na porcie 5904 (5900 + 4), a janevnc na 5905 (5900 + 5).

Następnie edytuj plik jednostki usługi dla każdego klienta. Otwórz plik /etc/systemd/system/vncserver@:4.service za pomocą edytora vi:

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

Spojrzenie na sekcję „Quick HowTo” mówi nam, że wykonaliśmy już pierwszy krok. Teraz musimy przejść przez pozostałe kroki. Komentarze mówią nam również, że VNC jest połączeniem niezaufanym. Porozmawiamy o tym później.

Na razie edytuj sekcję pliku, zastępując instancje <USER> przez joevnc. Dodaj również klauzulę -geometry 1280x1024 na końcu parametru ExecStart. To po prostu mówi VNC rozmiar ekranu, w którym powinien rozpocząć. Zmodyfikujesz w sumie dwie linie. Oto jak powinien wyglądać edytowany plik (zauważ, że cały plik nie jest pokazany):

# 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

Zapisz plik i wyjdź z vi.

Podobnie, otwórz plik /etc/systemd/system/vncserver@:5.service w vi i wprowadź zmiany dla użytkownika janevnc:

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

Tutaj jest tylko sekcja z zaznaczonymi zmianami:

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 || :'

Następnie wykonaj następujące polecenia, aby przeładować demona systemd i upewnić się, że VNC uruchamia się dla dwóch użytkowników podczas startu systemu.

sudo systemctl daemon-reload

Włącz pierwszą instancję serwera:

sudo systemctl enable vncserver@:4.service

Wyjście:

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

Włącz drugą instancję serwera:

sudo systemctl enable vncserver@:5.service

Wyjście:

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

Teraz skonfigurowano dwie instancje serwera VNC.

Krok 5 – Konfiguracja Firewalla

Następnie będziemy musieli skonfigurować firewall tak, aby zezwalał na ruch VNC tylko przez porty 5904 i 5905. CentOS 7 używa Dynamic Firewall poprzez demona firewalld; usługa ta nie musi się restartować, aby zmiany zaczęły obowiązywać.

Usługa firewalld powinna uruchomić się automatycznie podczas startu systemu, ale zawsze warto sprawdzić:

sudo firewall-cmd --state

To powinno pokazać:

running

Jeśli stan jest „nie działa” z jakiegokolwiek powodu, wykonaj następujące polecenie, aby upewnić się, że działa:

sudo systemctl start firewalld

Teraz dodaj reguły dla portów 5904 i 5905:

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

Wyjście:

success

Reload the firewall:

sudo firewall-cmd --reload

Wyjście:

success

Krok 6 – Ustawianie haseł VNC

Jesteśmy o krok od zobaczenia VNC w akcji. W tym kroku, użytkownicy będą musieli ustawić swoje hasła VNC. To nie są hasła linuksowe użytkowników, ale hasła do logowania się do sesji VNC.

Otwórz kolejne połączenie terminalowe z serwerem CentOS 7 i tym razem zaloguj się jako joevnc.

ssh joevnc@your_server_ip

Wykonaj następujące polecenie:

vncserver

Jak widać na poniższym wyjściu, serwer poprosi joevnc o ustawienie hasła VNC. Po wpisaniu hasła, program pokazuje również szereg plików tworzonych w katalogu domowym użytkownika:

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

Spójrzmy na linię New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1. localhost.localdomain to nazwa serwera w naszym przykładzie; w twoim przypadku może być inna. Zwróć uwagę na liczbę po nazwie serwera: (1, oddzielona dwukropkiem). Nie jest to liczba z pliku service unit joevnc’a (która wynosiła 4). Dzieje się tak, ponieważ jest to numer portu, na którym będzie działać sesja joevnc na tym serwerze, a nie numer portu samej usługi (5904).

Następnie otwórz nową sesję terminala i zaloguj się jako janevnc. Tutaj również uruchom serwer VNC i ustaw hasło dla janevnc:

vncserver

Powinieneś zobaczyć podobne dane wyjściowe pokazujące, że sesja janevnc będzie działać na wyświetlaczu 2.

Na koniec przeładuj usługi z głównej sesji terminala:

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

Krok 7 – Łączenie się ze zdalnymi pulpitami za pomocą klienta VNC

Dla tego samouczka założymy, że użytkownicy joevnc i janevnc próbują połączyć się z serwerem CentOS 7 ze swoich komputerów z systemem Windows.

Każdy z nich będzie potrzebował klienta VNC dla Windows, aby zalogować się do zdalnego pulpitu. Ten klient jest jak klient terminala, taki jak PuTTY, z wyjątkiem tego, że pokazuje graficzny obraz wyjściowy. Dostępnych jest wiele różnych klientów VNC, ale tym, którego będziemy używać jest RealVNC, dostępny tutaj. VNC Viewer dla Mac OS X jest dostępny do pobrania na tej samej stronie, a wersja dla Maca jest dość podobna do tej dla Windows.

Po uruchomieniu VNC Viewer pokazuje okno dialogowe jak poniżej:

W polu VNC Server dodaj adres IP twojego serwera CentOS 7. Po adresie IP serwera podajemy numer portu 5904, oddzielając go dwukropkiem (:). Użyliśmy 5904, ponieważ jest to port usługi VNC dla joevnc.

Postanowiliśmy również pozwolić VNC Viewerowi wybrać metodę szyfrowania. Opcja ta będzie szyfrować tylko hasło przesyłane przez sieć. Wszelka późniejsza komunikacja z serwerem będzie nieszyfrowana. (W ostatnim kroku skonfigurujemy bezpieczny tunel SSH.)

W rzeczywistości komunikat ostrzegawczy pokazuje właśnie to:

Zaakceptuj ostrzeżenie na razie. Zostanie wyświetlony monit o hasło:

Wprowadź hasło VNC joevnc, które ustawiłeś wcześniej.

Otworzy się nowe okno pokazujące pulpit GNOME naszego zdalnego serwera CentOS:

Zaakceptuj domyślny komunikat powitalny.

Teraz joevnc może uruchomić narzędzie graficzne, takie jak kalkulator GNOME:

Możesz pozostawić to połączenie z pulpitem otwarte.

Teraz janevnc może również uruchomić inną sesję VNC z serwerem CentOS. Adres IP jest taki sam, a port 5905:

Gdy janevnc loguje się przez VNC Viewer, pojawia się pusty pulpit z wiadomością powitalną, tak samo jak w przypadku joevnc. Innymi słowy, obaj użytkownicy nie współdzielą instancji pulpitu. Pulpit joevnc’a powinien nadal pokazywać kalkulator.

Aby zamknąć sesję zdalnego pulpitu, wystarczy po prostu zamknąć okno. Jednak to nie zatrzymuje usługi VNC użytkownika w tle na serwerze. Jeśli usługa nie zostanie zatrzymana lub ponownie uruchomiona, a maszyna nie zostanie ponownie uruchomiona, ta sama sesja pulpitu zostanie zaprezentowana przy następnym logowaniu.

Zamknij okna VNC Viewer dla joevnc i janevnc. Zamknij również ich sesje terminalowe. Z głównego okna terminala sprawdź, czy usługi VNC nadal działają:

sudo systemctl status vncserver@:4.service

Wyniki pokazują, że zdalny pulpit nadal działa:

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). . .

Sprawdź drugą usługę:

sudo systemctl status vncserver@:5.service

Ta też działa:

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). . .

Jeśli chciałbyś zalogować się ponownie na pulpit joevnc w tym momencie, zobaczyłbyś otwartą tę samą aplikację kalkulatora.

Przedstawia to pewne interesujące wyzwania dla administratorów systemu. Jeśli masz wielu użytkowników łączących się z serwerem przez VNC, możesz chcieć opracować jakiś sposób na zatrzymanie ich usług VNC, gdy nie są już potrzebne. Może to zaoszczędzić trochę cennych zasobów systemowych.

Rozwiązywanie problemów – awarie usługi VNC

Jak testujesz i bawisz się z VNC, możesz czasami stwierdzić, że usługa uległa awarii i jest nie do odzyskania. Kiedy próbujesz sprawdzić stan:

sudo systemctl status vncserver@:4.service

Może pojawić się ten długi komunikat o błędzie:

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)

Próba uruchomienia usługi nie działa:

sudo systemctl start vncserver@:4.service

Nieudane uruchomienie:

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

Zwykle przyczyna jest dość prosta. Sprawdź /var/log/messages:

sudo tail /var/log/messages

Powiązany z tym błąd będzie wyglądał tak:

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

Radą jest usunięcie pliku z folderu /tmp:

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

Wyjście:

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

Następnie uruchom usługę VNC:

sudo systemctl start vncserver@:4.service

Ogólne rozwiązywanie problemów

Chociaż stosunkowo rzadko, podczas pracy z VNC można napotkać inne błędy. Na przykład, ekran zdalnego pulpitu może być pusty lub zawieszony, sesja może się zawiesić z tajemniczym komunikatem o błędzie, VNC Viewer może nie łączyć się prawidłowo lub przekazywać polecenia do GUI w celu uruchomienia aplikacji, itp.

Zalecamy sprawdzenie pliku /var/log/messages w celu lepszego zrozumienia. Czasami może być konieczne ponowne uruchomienie serwera, lub w skrajnych przypadkach odtworzenie usługi VNC.

Zasoby systemowe mogą być również winowajcą; może być konieczne dodanie dodatkowej pamięci RAM do Dropleta, itp.

Krok 8 – Zabezpieczenie sesji VNC poprzez tunelowanie SSH

Do tej pory zarówno joevnc jak i janevnc uzyskiwali dostęp do swoich zdalnych pulpitów poprzez niezaszyfrowane kanały. Jak widzieliśmy wcześniej, VNC Viewer ostrzega nas o tym w momencie połączenia; tylko hasło jest szyfrowane na początku sesji. Każdy kolejny ruch sieciowy i transfer danych jest otwarty dla każdego, kto może go przechwycić w środku.

About SSH Tunnelling

Tutaj sesje Secure Shell (SSH) mogą pomóc. Dzięki SSH, VNC może działać w kontekście zaszyfrowanej sesji SSH. Jest to znane jako tunelowanie. W efekcie ruch VNC korzysta z protokołu SSH, co powoduje, że cała komunikacja z serwerem jest szyfrowana. Nazywa się to tunelowaniem, ponieważ SSH zapewnia ochronę VNC, a VNC pracuje jak w tunelu wewnątrz SSH. Tunelowanie SSH może być również stosowane dla innych protokołów, takich jak POP, X czy IMAP.

Tunnelowanie SSH działa z przekierowaniem portów, które jest w zasadzie środkiem translacji dostępu z jednego konkretnego portu na inny port na innej maszynie. Dzięki przekierowaniu portów, kiedy aplikacja kliencka łączy się z portem A na maszynie A, jest ona przekierowywana na port B na maszynie B. Aplikacja kliencka nie jest świadoma tej translacji i myśli, że łączy się z oryginalnym portem. Przekazywanie portów jest jedną z cech protokołu SSH.

W celu uzyskania bardziej szczegółowych informacji o tunelowaniu SSH, przeczytaj ten poradnik.

W tym poradniku skonfigurowaliśmy VNC do działania na portach 5904 (dla joevnc) i 5905 (dla janevnc).

Dzięki przekierowaniu portów, możemy ustawić naszego lokalnego klienta VNC aby łączył się z portem 5900 na lokalnym komputerze klienckim, a ten może być zmapowany na port 5905 na zdalnym serwerze. Ten przykład jest dla połączenia janevnc, ale można łatwo wykonać te same kroki dla innych klientów.

Kiedy aplikacja klienta VNC startuje, może być skierowana na port 5900 na localhost, a nasze przekierowanie portów będzie przezroczyście transportować ją na port 5905 na zdalnym serwerze.

Uwaga: Będziesz musiał za każdym razem uruchamiać sekcję SSH, aby połączenie było bezpieczne.

OS X

Na komputerze Mac otwórz Terminal.

Wprowadź następujące informacje o połączeniu, pamiętając o zastąpieniu your_server_ip adresem IP zdalnego serwera:

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

Wprowadź UNIX-owe hasło janevnc. Połączenie wydaje się zawieszać; możesz je utrzymywać tak długo, jak długo używasz zdalnego pulpitu.

Teraz przejdź do instrukcji dotyczących przeglądarki VNC.

Windows

Aby zabezpieczyć sesję VNC janevnc, założymy, że lokalny komputer Windows ma zainstalowane PuTTY. PuTTY jest darmowe i można je pobrać stąd.

Jeśli sesje VNC i terminala janevnc’a nie są jeszcze zamknięte, zamknij je teraz.

Uruchom PuTTY. Na ekranie sesji, upewnij się, że określasz adres IP serwera i nadajesz opisową nazwę połączeniu, a następnie kliknij przycisk Save, aby zapisać szczegóły połączenia. Zauważ, że podaliśmy username@your_server_ip w polu Nazwa hosta:

Następnie rozwiń element menu SSH w lewym panelu nawigacji i wybierz element X11. Zostaną wyświetlone właściwości przekierowania X11 dla sesji. Upewnij się, że pole wyboru Włącz przekierowanie X11 jest zaznaczone. Dzięki temu SSH szyfruje ruch X Windows, który przepływa między serwerem a klientem:

Na koniec wybierz pozycję Tunele SSH >. W polu Port źródłowy wpisz 5900. W polu Destination podajemy nazwę lub adres IP naszego serwera, a następnie dwukropek i numer portu VNC dla danego użytkownika. W naszym przypadku podaliśmy your_server_ip:5905.

Alternatywnie można użyć portu 5902. 2 w tym przypadku będzie numerem wyświetlania dla janevnc (pamiętaj komunikat wyświetlany, gdy janevnc uruchomił komendę vncserver).

Kliknij przycisk Dodaj, a mapowanie zostanie dodane w sekcji Przekierowane porty. W tym miejscu dodajemy przekierowanie portów dla sesji SSH; kiedy użytkownik łączy się z localhost na porcie 5900, połączenie będzie automatycznie tunelowane przez SSH na port 5905 zdalnego serwera.

Powróć do pozycji Sessions i zapisz sesję dla janevnc. Kliknij przycisk Open i otworzy się nowa sesja terminala dla janevnc. Zaloguj się jako janevnc z odpowiednim hasłem UNIX:

VNC Viewer

Następnie uruchom ponownie VNC Viewer. Tym razem w adresie serwera VNC wpisz <^> i pozwól serwerowi VNC wybrać metodę szyfrowania:

Kliknij przycisk Connect.

Wciąż otrzymasz okno dialogowe ostrzegające o niezaszyfrowanej sesji, ale tym razem możesz je bezpiecznie zignorować. VNC Viewer nie zna portu, na który jest przekierowywany (został on ustawiony w rozpoczętej właśnie sesji SSH) i zakłada, że próbujesz połączyć się z lokalną maszyną.

Zaakceptowanie tego ostrzeżenia spowoduje wyświetlenie znanego monitu o hasło. Wprowadź hasło VNC janevnc, aby uzyskać dostęp do zdalnego pulpitu.

Więc skąd wiesz, że sesja była szyfrowana? Jeśli się nad tym zastanowić, w sesji SSH ustawiliśmy przekierowanie portów. Jeśli sesja SSH nie została ustanowiona, przekierowanie portów nie zadziałałoby. W rzeczywistości, jeśli zamkniesz okno terminala i wylogujesz się z sesji PuTTY, a następnie spróbujesz połączyć się za pomocą samego VNC Viewer, próba połączenia z localhost:5900 pokazałaby następujący komunikat o błędzie:

Więc, jeśli połączenie localhost:5900 działa, możesz być pewny, że połączenie jest szyfrowane.

Pamiętaj, że będziesz chciał najpierw ustanowić połączenie SSH za każdym razem, gdy używasz VNC, aby upewnić się, że połączenie jest zawsze szyfrowane.

Wnioski

Dostęp do systemu CentOS Linux z poziomu interfejsu GUI może znacznie uprościć administrowanie systemem. Możesz połączyć się z dowolnego klienckiego systemu operacyjnego i nie musisz polegać na opartych na www panelach kontrolnych hostingu. VNC ma znacznie mniejszy ślad w porównaniu do większości paneli kontrolnych.

Chociaż pokazaliśmy, jak dwóch zwykłych użytkowników może się połączyć ze swoimi klientami VNC, jest to mało praktyczne w poważnych środowiskach produkcyjnych. W rzeczywistości użytkownicy będą mieli niestandardowe aplikacje lub przeglądarki umożliwiające dostęp do serwera. Uruchamianie wielu usług VNC dla każdego użytkownika tworzy również niepotrzebne obciążenie zasobów systemowych, nie wspominając o nieodłącznym ryzyku z tym związanym.

Jeśli zdecydujesz się zainstalować i uruchomić VNC na swoim produkcyjnym serwerze Linuksa, zdecydowanie zalecamy używanie go tylko do celów administracyjnych.

Jeśli zdecydujesz się zainstalować i uruchomić VNC na swoim produkcyjnym serwerze Linuksa, zdecydowanie zalecamy używanie go tylko do celów administracyjnych.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.