Jak udostępnić swój pulpit w Linux za pomocą x11vnc

Jak udostępnić swój pulpit w Linux za pomocą x11vnc

Cel

Naucz się, jak udostępniać swój komputer stacjonarny za pomocą protokołu VNC i aplikacji x11VNC

Wymagania

  • Zainstalowanie pakietu x11VNC

Konwencje

  • # - wymaga wykonania podanego polecenia z uprawnieniami root
    bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - podano polecenie, które ma być wykonywane jako zwykły użytkownik niepewny

Wstęp

Podczas gdy SSH jest ważnym narzędziem dla każdego administratora systemu, będąc najbardziej używanym i bezpiecznym protokołem dla zdalnej administracji, nawet zdolnego do przyznania dostępu do serwera wyświetlacza x11, przez przekazywanie x11, nie jest to właściwe narzędzie do użycia, gdy żądany docelowy ma podzielić się całą sesją stacjonarną. W takim przypadku VNC Protokół to nasz przyjaciel. Korzystając z niego, możemy całkowicie kontrolować inną maszynę, udostępniając nawet zdarzenia klawiatury lub myszy.

Chociaż wiele
Implementacje protokołu istnieją na GNU/Linux, a niektóre z nich są zintegrowane z określonymi środowiskami stacjonarnymi, takimi jak Vino/Vinagre W gnome, w tym samouczku skupimy się na użyciu i konfiguracji niezależnej od pulpitu x11vnc aplikacja.

Instalacja

x11vnc Aplikacja powinna być już pakowana i dostępna w twoich ulubionych repozytoriach dystrybucji. Instalowanie go na Fedorze to tylko kwestia biegu:

$ sudo dnf instalacja x11vnc

W Debian lub dystrybucji opartej na debiana poleceniem do użycia jest:

$ sudo apt-get install x11vnc

x11VNC jest również dostępny w repozytoriach artylinux. Możemy go zainstalować za pomocą Pacman:

$ sudo pacman -s x11vnc

Po zainstalowaniu program można uruchomić prosto z terminalu lub za pośrednictwem GUI, korzystając z uruchamiania pulpitu, który należy znaleźć w menu aplikacji.



Konfiguracja zapory ogniowej

Aby móc udostępnić naszą sesję stacjonarną za pomocą protokołu VNC, musimy skonfigurować zaporę, aby umożliwić przychodzące połączenia w porcie 5900 który jest domyślnym portem VNC-SERVER. Dokładne działanie do wykonania zależy od oprogramowania zapory, której używamy w naszym systemie. Podczas używania Firewalld Powinniśmy uruchomić:

$ sudo firewall-cmd --add-service = vnc-server

Jak widać, tak naprawdę nie określiliśmy portu, który ma być bezpośrednio dozwolony: zamiast tego używaliśmy nazwy usługi, ponieważ jest on domyślnie powiązany z portem. Pamiętaj, gdy używasz Firewalld, Jeśli strefa nie jest określona w przypadku --strefa opcja, określone reguły zostaną zastosowane w domyślnej.

Podczas używania UFW, Domyślna zapora ogniowa w Ubuntu, polecenie, które należy użyć, to:

$ sudo ufw zezwala na 5900/tcp

Ponadto, jeśli zamierzamy zezwolić na połączenie VNC z maszyn poza naszą siecią lokalną, powinniśmy skonfigurować regułę zezwoleń dla tego samego portu w naszym router.

Zapoznanie się z x11vnc

Najłatwiejszym sposobem na rozpoczęcie używania x11VNC jest wywołanie programu w terminalu bez żadnej opcji. Program musi zostać uruchomiony bez przywileje administratora:

x11VNC

Domyślnie x11VNC będzie używać wyświetlacza : 0, Można to jednak zmienić za pomocą -wyświetlacz opcja.

Pierwszą rzeczą, którą otrzymamy po uruchomieniu powyższego polecenia, jest ostrzeżenie o braku użycia hasła do połączenia. To się spodziewało, ponieważ jeszcze nie skonfigurowaliśmy. Działanie z tą konfiguracją jest bardzo niebezpieczne, ponieważ każdy komputer z dostępem do sieci do naszego komputera może potencjalnie wyświetlić i kontrolować nasz komputer stacjonarny. Pierwszą rzeczą, którą musimy zatem zrobić, jest skonfigurowanie programu, aby wymagało uwierzytelnienia po żądaniu.



Ogranicz dostęp za pomocą hasła

Istnieją w zasadzie trzy sposoby konfigurowania uwierzytelnienia za pomocą x11VNC, odpowiadają one -Passwd, -StorePasswd, I -Passwdfile opcje. Zobaczmy krótko, jak modyfikują zachowanie programu.

Pierwsza metoda jest reprezentowana przez zastosowanie -Passwd Opcja, która pozwala nam zapewnić czas wykonawczy, jednorazowy, zwykły utwór bezpośrednio w terminalu: nie będzie on nigdzie zapisywany i będzie po prostu używany na uruchomionej sesji.

Drugą metodą jest użycie -StorePasswd Opcja: Akceptuje dwa opcjonalne argumenty: przechodzić I plik, Aby określić odpowiednio hasło i plik, w którym należy je przechowywać. Jeśli jednak będzie używany bez żadnych argumentów, będzie on monitorował hasło interaktywnie i będzie przechowywane w ~/.VNC/PASSWD plik. Wreszcie, jeśli opcja jest używana z jednym argumentem, zostanie interpretowana jako plik do przechowywania hasła. Zwróć uwagę, że plik zawierający hasło nie zostanie zaszyfrowany, ale po prostu zaciemniony stałym kluczem, dlatego powinien mieć możliwość dostępu tylko do zaufanego użytkownika.

Po zapisaniu hasła program wyjdzie. Od tego momentu, aby uruchomić sesję VNC chronioną hasłem, należy wydać następujące polecenie:

$ x11vnc -rfbauth/ścieżka/do/passfile

Gdzie domyślnie/ścieżka/do/passfile będzie odpowiadał ~//.VNC/PASSWD.

Trzecią opcją, którą mamy, jest użycie -Passwdfile flaga. Korzystając z niego hasło do połączenia jest ustawiane przez odczyt pierwszego wiersza istniejącego pliku, przekazywany jako argument wyłącznej opcji. Zachowanie opcji można dalej modyfikować poprzez prefiksowanie argumentu pliku. Na przykład, jeśli nazwa pliku jest prefiks RM:, Sam plik zostanie usunięty po odczytaniu jego treści przez program. Podczas korzystania z CMD: Zamiast tego przedrostek określony po prefiks będzie interpretowany jako polecenie zewnętrzne, a jego dane wyjściowe będzie używane jako hasło. Inne prefiks można użyć z tą opcją. Aby uzyskać pełne odniesienie, możesz zapoznać się z Manpage programu.

Podaj hasło do sesji tylko dla widoku

Można użyć x11vnc Tak więc utworzone połączenie będzie działać w trybie tylko widoku. Oznacza to, że połączeni klienci będą mogli obserwować wspólną sesję, ale nie będą w stanie z nią wchodzić w interakcje. Aby uruchomić w tym trybie, program musi zostać uruchomiony z -tylko podgląd opcja. Możliwe jest skonfigurowanie hasła Spefic dla tego rodzaju dostępu, więc aby uzyskać bardziej przeciętą konfigurację. Aby uzyskać ten wynik, -viewpasswd Należy użyć opcji, podając hasło jako argument ciągu. Wymaga to jednak, że podano również hasło pełnego dostępu, używając -Passwd Opcja, którą omówiliśmy powyżej.

Zabezpiecz połączenie za pomocą szyfrowanego tunelu

Domyślnie połączenie VNC nie jest szyfrowane, a to może być ryzyko bezpieczeństwa. Możemy zastosować różne podejścia, aby to naprawić. Pierwszym byłoby użycie VPN (Wirtualna sieć prywatna), drugi do użycia tunelu SSL, a trzeci do użycia ssh.

Opisując, jak skonfigurować VPN, jest poza zakresem tego artykułu, wkrótce zobaczymy, jak zaimplementować pozostałe dwie opcje.

Użyj tunelu SSL/TLS

Możemy zaszyfrować połączenie VNC za pomocą tunelu SSL. Aby móc to osiągnąć, musimy użyć -SSL Lub -ogpa opcje. Pierwszy wymaga skompilowania x11VNC libssl wsparcie. Ta opcja akceptuje jeden argument, który jest certyfikatem w pem format do użycia. Jeśli ten argument nie jest podany i Openssl narzędzie jest zainstalowane w naszym systemie, nowy certyfikat zostanie wygenerowany i zapisany ~/.VNC/certs/serwer.pem.

-ssltunnel Zamiast tego opiera się na korzystaniu z programu zewnętrznego, ogpa Aby zapewnić połączenie SSL. Jako -ssl, akceptuje również certyfikat PEM jako argument. Jeśli nie zostanie dostarczony, nowy zostanie wygenerowany i zapisany jak wspomniano powyżej (to zachowanie można jednak zmienić, na przykład za pomocą ciągu TMP Jako argument - w tym przypadku zostanie wygenerowany tymczasowy certyfikat).

Zauważ, że w obu przypadkach automatycznie wygenerowane certyfikat będzie samodzielnie podpisane, chociaż zapewnienie bezpiecznego połączenia nie będzie reprezentować ochrony przed atakiem Man-in-thetdle. Podczas generowania certyfikatu zostaniemy zapytani, czy chcemy podać hasło, aby je chronić, a jeśli tak jest, zostaniemy poproszeni o jego włożenie.

Wreszcie, aby móc korzystać z tunelu SSL, aplikacja kliencka musi obsługiwać SSL.



Użyj tunelu SSH

Aby użyć tunelu SSH, musimy uruchomić serwer VNC za pomocą SSH, z tym poleceniem (zakłada, że ​​używany jest dom domyślny):

$ ssh -t -l 5900: LocalHost: 5900 Remote -Machine 'x11vnc -Localhost -Display: 0'

Prawdopodobnie znasz SSH, ale przeanalizujmy to polecenie. Przede wszystkim prowadziliśmy SSH z -T opcja, aby przydzielić pseudo-końcowy i z -L Po pierwsze, w zasadzie powiedzieliśmy, że naprzód port 5900 na naszym komputerze lokalnym (klienta) na tym samym porcie na zdalnym komputerze. Jak widać, polecenie x11vnc jest uruchamiane z -Lokalny Gospodarz opcja. To, co zasadniczo robi to, aby umożliwić tylko połączenia z tego samego komputera, na którym serwer działa. Ta opcja jest również automatycznie używana podczas korzystania z tunelu SSL, aby uniknąć ich ominięcia. Następnie możemy uruchomić nasz VNCViewer na kliencie:

$ vncviewer -preeferredEncoding = Zrle LocalHost: 0

Zauważ, że ustawiamy preferowane kodowanie Zrle, To powinno pomóc w wydajności SSH.

Uruchom w trybie graficznym

Jak powiedziano wcześniej, x11vnc może być również używane w trybie graficznym za pomocą wyrzutni stacjonarnej. Domyślnie program pokaże okno, w którym możemy wybrać port, a także inne opcje:

Wybierz okno portu x11VNC

Po kliknięciu przycisku „OK” ikona zostanie pokazana na tacy systemowej, a okno z jego właściwościami pojawi się na ekranie. Po lewej stronie zostaną wyświetlone przydatne instrukcje dla szybkiego startupu. Z tego interfejsu możemy również wybrać hasło do sesji i hasła tylko dla widoku:

Okno właściwości x11vnc

Wnioski

Chociaż VNC nawet nie zbliża się do reprezentowania substytutu SSH, może być właściwym narzędziem do użycia dla niektórych konkretnych zadań. W tym samouczku widzieliśmy podstawowe kroki potrzebne do skonfigurowania i użycia x11vnc serwer. Chociaż dostępnych jest wiele alternatyw, x11VNC jest bardzo prostym i niezależnym od pulpitu narzędziem, które można używać w dowolnym miejscu.

Powiązane samouczki Linux:

  • Udostępnij ekran komputerowy z VNC w Linux
  • Konfigurowanie dostępu do serwera VNC na Redhat Linux
  • Narzędzia VNC zdalne ekran dla Linux
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Linux: Ustaw ssh
  • Jak w pełni wykorzystać OpenSsh
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
  • Podstawowe polecenia Linux