Virtual Network Computing (VNC) to system udostępniania ekranu służący do zdalnego dostępu do graficznych interfejsów użytkownika. Wykorzystuje protokół zdalnego bufora ramek (RFB), umożliwiając połączenie jednego serwera (po stronie użytkownika) z drugą stroną (klientem). VNC jest bezpieczne, pewne i działa na wszystkich systemach operacyjnych.
RealVNC, UltraVNC, Xfce, TightVNC, by wymienić tylko kilka, to najpopularniejsze obecnie używane klienty VNC. Spośród dostępnych alternatyw możesz swobodnie wybrać dowolny program VNC według własnego uznania. W tym samouczku przeprowadzimy Cię przez kroki instalacji i konfiguracji VNC na Ubuntu 20.04. Zainstalujemy Xfce ze względu na jego szybkość, lekkość i doskonałą wydajność.
Zaczniemy od skonfigurowania serwera VNC na serwerze Ubuntu i ustanowienia bezpiecznego połączenia przez tunel SSH. Na koniec użyjemy programu klienckiego VNC na naszym lokalnym komputerze, aby wejść w interakcję z serwerem za pośrednictwem graficznego środowiska pulpitu.
Wymagania wstępne
Aby przejść przez ten samouczek, będziesz potrzebować:
-
Serwera Ubuntu 20.04 z użytkownikiem niebędącym rootem i prostą zaporą sieciową (UFW).
-
Lokalnego komputera z zainstalowanym klientem VNC. Ponadto klient VNC, którego będziemy używać, łączy się przez tunele SSH.
Krok 1 — Instalacja środowiska graficznego i serwera VNC
W przeciwieństwie do poprzednich wersji Ubuntu, Ubuntu 20.04 nie jest dostarczane z preinstalowanym serwerem VNC. W pierwszym kroku zainstalujemy niezbędne pakiety z oficjalnego repozytorium Ubuntu. Zanim przejdziemy dalej, zaktualizujmy istniejące pakiety:
|
1 |
sudo apt update |
Teraz zainstalujemy Xfce i pakiet xfce4-goodies za pomocą polecenia:
|
1 |
sudo apt install xfce4 xfce4-goodies |
Podczas instalacji pakietu pojawi się ekran z monitem o wybór domyślnego menedżera wyświetlania dla Xfce. Zignoruj tę wiadomość lub ustaw go jako domyślny, a następnie naciśnij ENTER.
Menedżer wyświetlania to program, który umożliwia użytkownikom logowanie się do środowiska graficznego za pośrednictwem interfejsu graficznego. W tym samouczku użyjemy Xfce podczas łączenia się z klientem VNC, gdzie jesteśmy zalogowani jako użytkownik Ubuntu inny niż root. Dlatego wybór menedżera wyświetlania nie będzie miał żadnego wpływu na naszą instalację.
Po instalacji Xfce zainstalujemy serwer TightVNC:
|
1 |
sudo apt install tightvncserver |
W kolejnym kroku użyj polecenia vncserver, aby ustawić hasło dostępu do VNC i utworzyć początkowe pliki konfiguracyjne. Wpisz następujące polecenie, aby uruchomić instancję serwera VNC:
|
1 |
vncserver |
Następnie ustaw hasło o długości od 6 do 8 znaków i naciśnij ENTER. Zobaczysz komunikat z monitem:
|
1 2 3 4 5 |
Output You will require a password to access your desktops. Password: Verify: |
W przyszłości, jeśli zechcesz zmienić hasło lub dodać hasło tylko do odczytu, użyj polecenia:
|
1 |
vncpasswd |
Do tej pory będziesz mieć utworzone wszystkie domyślne konfiguracje dla serwera oraz port wyświetlania 5901 uruchomiony jako :1. VNC może uruchomić wiele instancji na innych portach wyświetlania, takich jak :2, :3, oraz :4 odnoszące się do portu 5902, 5903, i 5904 odpowiednio:
|
1 2 3 4 5 6 7 8 9 |
Output Would you like to enter a view-only password (y/n)? n xauth: file /home/cloudsigma/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/cloudsigma/.vnc/xstartup Starting applications specified in /home/cloudsigma/.vnc/xstartup Log file is /home/cloudsigma/.vnc/your_hostname:1.log |
Twój serwer VNC jest teraz zainstalowany i działa pomyślnie. W następnym kroku skonfigurujemy serwer tak, aby uruchamiał Xfce, co pozwoli uzyskać dostęp przez interfejs graficzny.
Krok 2 — Konfiguracja serwera VNC
W katalogu domowym znajdziesz folder .vnc, który zawiera wszystkie pliki konfiguracyjne o nazwie startup. Początkowo znajdziesz uruchomiony plik startowy, który został automatycznie utworzony podczas uruchamiania polecenia vncserver w Kroku-1. Skrypt startowy został utworzony podczas uruchamiania polecenia vncserver w poprzednim kroku. Teraz jednak utworzysz własny, aby uruchomić pulpit Xfce. Będziemy musieli również utworzyć nasz własny serwer, aby uruchomić pulpit Xfce, ponieważ konfiguracja VNC ulegnie zmianie.
Przed przejściem dalej musimy zatrzymać instancję serwera VNC działającą na porcie 5901:
|
1 |
vncserver -kill :1 |
Zobaczysz dane wyjściowe:
|
1 2 |
Output Killing Xtightvnc process ID 17648 nano ~/.vnc/xstartup |
Zamiast 17648, możesz otrzymać inną liczbę i to w porządku. Następnie zmodyfikujemy plik xstartup . Przed wprowadzeniem jakichkolwiek modyfikacji pliku, utwórzmy kopię zapasową oryginalnego pliku:
|
1 |
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak |
Następnie utwórz nowy plik xstartup i otwórz go w dowolnym edytorze tekstu. W tym samouczku używamy nano:
|
1 |
nano ~/.vnc/xstartup |
Po zakończeniu dodaj do pliku następujące linie:
|
1 2 3 |
#!/bin/bash xrdb $HOME/.Xresources startxfce4 & |
Za każdym razem, gdy uruchamiasz lub restartujesz serwer VNC, te polecenia są wykonywane automatycznie. Pierwsza linia to Shebang, która informuje system o informacjach interpretera, aby przekazać ~/.vnc/xstartup plik do wykonania. Kolejna linia xrdb $HOME/. Xresources, informuje framework GUI VNC o odczytaniu pliku Xresources użytkownika serwera. Na koniec ostatnia linia prosi serwer o uruchomienie Xfce. Po dodaniu tych linii zapisz i zamknij plik.
Musimy uczynić plik wykonywalnym, aby serwer VNC mógł korzystać z nowego pliku startowego:
|
1 |
chmod +x ~/.vnc/xstartup |
Następnie zrestartuj serwer VNC:
|
1 |
vncserver -localhost |
Teraz będziesz mieć -localhost dodaną tutaj opcję. Localhost wiąże serwer VNC z interfejsem loopback Twojego serwera, co pozwala na połączenia wyłącznie z zainstalowanych serwerów. Następnie ustanowimy tunel SSH między naszą lokalną maszyną a serwerem. Celem jest dodanie dodatkowej warstwy bezpieczeństwa wokół VNC. Dlaczego? Ponieważ użytkownicy, którzy będą mieli dostęp, to ci, którzy mają już dostęp SSH do serwera.
Zobaczysz następujący wynik:
|
1 2 3 4 |
New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/cloudsigma/.vnc/your_hostname:1.log |
Po skonfigurowaniu jesteśmy gotowi do połączenia się z serwerem VNC z naszej lokalnej maszyny.
Krok 3 — Bezpieczne połączenie z pulpitem VNC
Podczas łączenia się z serwerem VNC nie korzysta z bezpiecznych protokołów. Dlatego musimy ustanowić tunel SSH i poprosić klienta VNC o nawiązanie połączenia przy użyciu tunelu, zamiast pozwalać mu na bezpośrednie połączenie.
Utworzymy połączenie SSH na naszym lokalnym komputerze za pomocą ssh polecenia, które przekierowuje do localhost połączenia. Użyj polecenia w terminalu, aby utworzyć połączenie SSH:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
Rozszyfrujmy powyższy kod:
-
-L 59000:localhost:5901: Przełącznik -L określa, że podany port na lokalnym komputerze ( 59000) zostanie przekierowany na podany host i port na serwerze docelowym ( localhost:5901). Oznacza to, że port 5901 na serwerze docelowym zostanie zdefiniowany jako your_server_ip). Podany port lokalny jest dowolny. Dopóki port nie jest już powiązany z inną usługą, możesz go swobodnie używać jako portu przekierowania dla swojego tunelu.
-
-C: Włącza kompresję, co dodatkowo pomaga w minimalizacji zużycia zasobów i przyspieszeniu wydajności.
-
-N: Przydatne do przekierowywania portów. Informuje to ssh, aby nie wykonywać żadnych zdalnych poleceń.
-
-l cloudsigma your_server_ip: Przełącznik -l pozwala określić użytkownika, jako którego chcesz się zalogować po połączeniu z serwerem.
Powyższe polecenie jest bezpieczniejszym sposobem nawiązania bezpiecznego połączenia niż zwykłe otwarcie zapory sieciowej serwera w celu zezwolenia na połączenia z portem 5901 z dowolnego miejsca. Po nawiązaniu połączenia tunel SSH przekierowuje zawartość z portu 5901 na Twoim VNC do portu 59000 na Twoim lokalnym komputerze przez domyślny port SSH; port 22.
Możesz również użyć PuTTY do połączenia się z serwerem. Otwórz PuTTY, przejdź do lewej strony terminala PuTTY i znajdź gałąź Connection, aby się połączyć. Następnie rozwiń gałąź SSH i kliknij Tunnels. Na Opcje kontrolujące przekierowanie portów SSH ekran, wpisz 59000 jako Port źródłowy oraz localhost:5901 jako Cel:

Pozostaw wszystkie opcje bez zmian, kliknij Dodaj, a następnie Zastosuj aby utworzyć tunel. Po uruchomieniu tunelu użyj klienta VNC, aby połączyć się z localhost: 59000. Domyślnie zostaniesz poproszony o uwierzytelnienie za pomocą hasła utworzonego w Kroku 1. Po połączeniu zobaczysz domyślny pulpit Xfce:

Możesz uzyskiwać dostęp do plików w katalogu domowym i zarządzać nimi. Skonfiguruj również swój serwer VNC, aby działał jako usługa systemd.
Krok 4 — Uruchamianie VNC jako usługi systemd
Skonfigurowanie serwera VNC do działania jako usługa systemd umożliwia zarządzanie serwerem. Możesz go uruchamiać, zatrzymywać, restartować lub wyłączać zgodnie z własnymi potrzebami i wygodą. Za każdym razem, gdy serwer się uruchamia, możesz użyć poleceń zarządzania systemd, aby sprawdzić, czy serwer jest WŁĄCZONY lub WYŁĄCZONY.
Najpierw utworzymy nowy plik jednostki, aby określić port wyświetlacza VNC, którego chcemy używać podczas zarządzania usługami. Zdefiniuj plik jednostki:
|
1 |
sudo nano /etc/systemd/system/vncserver@.service |
Znajdziesz @ symbol na końcu nazwy pliku, który umożliwia przekazanie argumentu do konfiguracji usługi.
Następnie dodaj te linie do pliku jednostki. Zmień nazwę User, Group, WorkingDirectory, oraz nazwę użytkownika w wartości PIDFILE:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=cloudsigma Group=cloudsigma WorkingDirectory=/home/cloudsigma PIDFile=/home/cloudsigma/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target |
Jeśli VNC już działa, polecenie ExecStartPre je zatrzyma. Polecenie ExecStart polecenie uruchamia VNC i ustawia głębię kolorów na 24-bitową o rozdzielczości 1280×800. Możesz edytować te opcje startowe w zależności od swoich wymagań. Pamiętaj również, że ExecStart polecenie ponownie zawiera -localhost opcję. Po zakończeniu zapisz i zamknij plik jednostki.
Następnie wprowadź nowy plik jednostki do swojego systemu:
|
1 |
sudo sudo systemctl daemon-reload |
Włącz aktywację pliku jednostki:
|
1 |
sudo systemctl enable vncserver@1.service |
Znak 1 następujący po znaku @ oznacza, na którym numerze ekranu usługa powinna się pojawić. W naszym przypadku jest to domyślny :1, jak omówiono w Kroku-2. Jeśli VNC nadal działa, możesz zatrzymać bieżącą instancję serwera VNC za pomocą kill polecenia:
|
1 |
vncserver -kill :1 |
Następnie uruchom go tak, jak każdą inną usługę systemd:
|
1 |
sudo systemctl start vncserver@1 |
Możesz zweryfikować, czy został uruchomiony, za pomocą tego polecenia:
|
1 |
sudo systemctl status vncserver@1 |
Zobaczysz wynik:
|
1 2 3 4 5 6 7 8 |
Output vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-07 17:23:50 UTC; 6s ago Process: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Main PID: 39795 (Xtightvnc) ... |
Twój serwer VNC jest teraz gotowy do użycia przy każdym uruchomieniu serwera i możesz nim zarządzać za pomocą poleceń systemctl tak jak każdą inną usługą systemd. Nie zauważysz jednak żadnej różnicy po stronie klienta. Aby połączyć się ponownie, uruchom swój tunel SSH za pomocą:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
Możesz ponownie nawiązać połączenie za pomocą klienta VNC z localhost:59000 ze swoim serwerem.
Podsumowanie
Początkowo konfiguracja serwera VNC może wydawać się wyzwaniem, szczególnie gdy próbujesz połączyć się z nowym komputerem. Gdy już nawiążesz stabilne połączenie, praca z komputerem zdalnym będzie przyjemna i ekscytująca. Dzięki zabezpieczonemu i działającemu serwerowi VNC na serwerze Ubuntu 20.04 możesz łatwo zarządzać swoimi zasobami, plikami, oprogramowaniem i ustawieniami za pomocą przyjaznego dla użytkownika interfejsu graficznego. Korzystanie z nadmiernej przepustowości łącza jest być może jedną z wad korzystania z VNC. Możesz to obejść, używając ekranów o niskiej rozdzielczości i w odcieniach szarości, aby uzyskać szybszy transfer.
Miłego korzystania z komputera!
Komentarze
Brak komentarzy. Bądź pierwszy.