VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04
Niektórzy użytkownicy wynajmują stosunkowo niedrogi VPS z systemem Windows w celu uruchamiania usług zdalnego pulpitu. To samo można zrobić w systemie Linux bez konieczności hostowania własnego sprzętu w centrum danych lub wynajmowania serwera dedykowanego. Niektórzy potrzebują znanego środowiska graficznego do testowania i programowania lub zdalnego pulpitu z szerokim kanałem do pracy z urządzeń mobilnych. Istnieje wiele opcji korzystania z systemu Virtual Network Computing (VNC) opartego na protokole Remote FrameBuffer (RFB). W tym krótkim artykule podpowiemy Ci jak skonfigurować go na maszynie wirtualnej z dowolnym hypervisorem.

Spis treści:

Wybór serwera VNC
Instalacja i konfiguracja
Uruchamianie usługi poprzez systemd
Połączenie z komputerem stacjonarnym

Wybór serwera VNC

Usługę VNC można wbudować w system wirtualizacji, a hypervisor połączy ją z emulowanymi urządzeniami i nie będzie wymagana żadna dodatkowa konfiguracja. Ta opcja wiąże się ze znacznym obciążeniem i nie jest obsługiwana przez wszystkich dostawców - nawet w mniej zasobochłonnej implementacji, gdy zamiast emulować prawdziwe urządzenie graficzne, na maszynę wirtualną przesyłana jest uproszczona abstrakcja (bufor ramki). Czasami serwer VNC jest powiązany z działającym serwerem X, ale ta metoda jest bardziej odpowiednia w przypadku dostępu do maszyny fizycznej, a na wirtualnej stwarza szereg problemów technicznych. Najłatwiejszym sposobem zainstalowania serwera VNC jest użycie wbudowanego serwera X. Nie wymaga urządzeń fizycznych (karta wideo, klawiatura i mysz) ani ich emulacji za pomocą hypervisora, dlatego nadaje się do każdego typu VPS.

Instalacja i konfiguracja

Będziemy potrzebować maszyny wirtualnej z systemem Ubuntu Server 18.04 LTS w domyślnej konfiguracji. W standardowych repozytoriach tej dystrybucji znajduje się kilka serwerów VNC: TightVNC, TygrysVNC, x11vnc i inni. Zdecydowaliśmy się na TigerVNC – obecny fork TightVNC, który nie jest wspierany przez dewelopera. Konfiguracja pozostałych serwerów odbywa się w podobny sposób. Musisz także wybrać środowisko graficzne: naszym zdaniem optymalną opcją byłoby XFCE ze względu na stosunkowo niskie wymagania dotyczące zasobów obliczeniowych. Ci, którzy chcą, mogą zainstalować inny DE lub WM: wszystko zależy od osobistych preferencji, ale wybór oprogramowania wpływa bezpośrednio na zapotrzebowanie na pamięć RAM i rdzenie obliczeniowe.

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04

Instalacja środowiska graficznego ze wszystkimi zależnościami odbywa się za pomocą następującego polecenia:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Następnie musisz zainstalować serwer VNC:

sudo apt-get install tigervnc-standalone-server tigervnc-common

Uruchamianie go jako superużytkownik to zły pomysł. Utwórz użytkownika i grupę:

sudo adduser vnc

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04

Dodajmy użytkownika do grupy sudo, aby mógł wykonywać zadania administracyjne. Jeśli nie ma takiej potrzeby, możesz pominąć ten krok:

sudo gpasswd -a vnc sudo

Następnym krokiem jest uruchomienie serwera VNC z uprawnieniami użytkownika vnc w celu utworzenia bezpiecznego hasła i plików konfiguracyjnych w katalogu ~/.vnc/. Długość hasła może wynosić od 6 do 8 znaków (dodatkowe znaki są obcinane). W razie potrzeby ustawiane jest również hasło tylko do przeglądania, tj. bez dostępu do klawiatury i myszy. Następujące polecenia są wykonywane jako użytkownik vnc:

su - vnc
vncserver -localhost no

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04
Domyślnie protokół RFB wykorzystuje zakres portów TCP od 5900 do 5906 – jest to tzw. porty wyświetlacza, każdy odpowiadający ekranowi serwera X. W tym przypadku porty są skojarzone z ekranami od :0 do :6. Uruchomiona przez nas instancja serwera VNC nasłuchuje na porcie 5901 (ekran: 1). Pozostałe instancje mogą pracować na innych portach z ekranami :2, :3 itd. Przed dalszą konfiguracją należy zatrzymać serwer:

vncserver -kill :1

Polecenie powinno wyświetlić coś takiego: „Zabicie procesu Xtigervnc o identyfikatorze 18105... sukces!”

Po uruchomieniu TigerVNC uruchamia skrypt ~/.vnc/xstartup w celu skonfigurowania ustawień konfiguracyjnych. Stwórzmy własny skrypt, zapisując najpierw kopię zapasową istniejącego, jeśli istnieje:

mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup

Sesja środowiska graficznego XFCE jest uruchamiana przez następujący skrypt xstartup:

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

Aby VNC odczytało plik .Xresources w katalogu domowym, wymagane jest polecenie xrdb. Tam użytkownik może zdefiniować różne ustawienia graficzne pulpitu: renderowanie czcionek, kolory terminala, motywy kursora itp. Skrypt musi być wykonywalny:

chmod 755 ~/.vnc/xstartup

To kończy konfigurację serwera VNC. Jeśli uruchomisz go za pomocą polecenia vncserver -localhost no (jako użytkownik vnc), możesz połączyć się przy użyciu wcześniej określonego hasła i zobaczyć następujący obrazek:

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04

Uruchamianie usługi poprzez systemd

Ręczne uruchamianie serwera VNC nie nadaje się do użytku bojowego, dlatego skonfigurujemy usługę systemową. Polecenia są wykonywane jako root (my używamy sudo). Najpierw utwórzmy nowy plik jednostkowy dla naszego serwera:

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

Symbol @ w nazwie umożliwia przekazanie argumentu w celu skonfigurowania usługi. W naszym przypadku określa port wyświetlacza VNC. Plik jednostki składa się z kilku sekcji:

[Unit]
Description=TigerVNC server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Następnie musisz powiadomić systemd o nowym pliku i aktywować go:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]

Cyfra 1 w nazwie określa numer ekranu.

Zatrzymaj serwer VNC, uruchom go jako usługę i sprawdź status:

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

Jeśli usługa jest uruchomiona, powinniśmy otrzymać coś takiego.

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04

Połączenie z komputerem stacjonarnym

Nasza konfiguracja nie wykorzystuje szyfrowania, więc pakiety sieciowe mogą zostać przechwycone przez atakujących. Ponadto na serwerach VNC dość często znaleźć luki, dlatego nie należy ich otwierać w celu uzyskania dostępu z Internetu. Aby bezpiecznie połączyć się na komputerze lokalnym, musisz spakować ruch do tunelu SSH, a następnie skonfigurować klienta VNC. W systemie Windows można używać graficznego klienta SSH (na przykład PuTTY). Ze względów bezpieczeństwa TigerVNC na serwerze nasłuchuje tylko hosta lokalnego i nie jest bezpośrednio dostępny z sieci publicznych:


sudo netstat -ap |more

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04
W systemach Linux, FreeBSD, OS X i innych systemach operacyjnych typu UNIX tunel z komputera klienckiego jest tworzony za pomocą narzędzia ssh (sshd musi być uruchomione na serwerze VNC):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

Opcja -L wiąże port 5901 połączenia zdalnego z portem 5901 na hoście lokalnym. Opcja -C włącza kompresję, a opcja -N mówi ssh, aby nie wykonywał zdalnego polecenia. Opcja -l określa login dla zdalnego logowania.

Po skonfigurowaniu tunelu na komputerze lokalnym należy uruchomić klienta VNC i nawiązać połączenie z hostem 127.0.0.1:5901 (localhost:5901), używając wcześniej podanego hasła, aby uzyskać dostęp do serwera VNC. Możemy teraz bezpiecznie komunikować się poprzez szyfrowany tunel ze środowiskiem graficznym XFCE na VPS. Na zrzucie ekranu główne narzędzie działa w emulatorze terminala, aby pokazać niskie zużycie zasobów obliczeniowych maszyny wirtualnej. Wtedy wszystko będzie zależało od aplikacji użytkownika.

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04
Możesz zainstalować i skonfigurować serwer VNC w systemie Linux na prawie każdym VPS. Nie wymaga to kosztownych i wymagających dużych zasobów konfiguracji z emulacją karty wideo ani zakupu komercyjnych licencji na oprogramowanie. Oprócz rozważanych przez nas opcji usług systemowych, istnieją inne: uruchamianie w trybie demona (przez /etc/rc.local) podczas uruchamiania systemu lub na żądanie przez inetd. To drugie jest interesujące przy tworzeniu konfiguracji dla wielu użytkowników. Internet Superserver uruchomi serwer VNC i połączy z nim klienta, a serwer VNC utworzy nowy ekran i rozpocznie sesję. Do uwierzytelnienia w jego ramach możesz użyć menedżera wyświetlania graficznego (np. LightDM), a po odłączeniu klienta sesja zostanie zamknięta, a wszystkie programy pracujące z ekranem zostaną zakończone.

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera VNC na Ubuntu 18.04

Źródło: www.habr.com

Dodaj komentarz