VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04

VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04
Niektórzy użytkownicy wynajmują stosunkowo niedrogie VPS z systemem Windows do uruchamiania usługi zdalnych pulpitów. To samo można zrobić na Linuxie, nie umieszczając własnego sprzętu w centrum danych ani wynajmując serwer dedykowany. Pewnym osobom potrzebne jest znane graficzne środowisko do testów i rozwoju lub zdalny pulpit z szerokim pasmem do pracy z urządzeń mobilnych. Istnieje wiele zastosowań systemu Virtual Network Computing (VNC) opartego na protokole Remote FrameBuffer (RFB). W krótkim artykule opowiemy, jak skonfigurować go na maszynie wirtualnej z dowolnym hipernadzorcą.

Spis treści:

Wybór serwera VNC
Instalacja i konfiguracja
Uruchamianie usługi przez systemd
Podłączenie do pulpitu

Wybór serwera VNC

Usługa VNC może być zintegrowana z systemem wirtualizacji, przy czym hipernadzorca połączy ją z emulowanymi urządzeniami i nie będzie wymagała dodatkowej konfiguracji. Ta opcja wiąże się z dużymi kosztami operacyjnymi i nie jest obsługiwana przez wszystkich dostawców — nawet w mniej zasobożernej wersji, w której zamiast emulacji rzeczywistego urządzenia graficznego, maszynie wirtualnej przekazywana jest uproszczona abstrakcja (framebuffer). Czasami serwer VNC jest powiązany z działającym serwerem X, ale ten sposób bardziej nadaje się do dostępu do fizycznej maszyny, a na maszynie wirtualnej stwarza szereg trudności technicznych. Najprościej jest zainstalować serwer VNC z wbudowanym serwerem X. Nie wymaga posiadania fizycznych urządzeń (adaptera wideo, klawiatury i myszy) ani ich emulacji za pomocą hipernadzorcy, dlatego nadaje się do każdego typu VPS.

Instalacja i konfiguracja

Będzie nam potrzebna maszyna wirtualna z Ubuntu Server 18.04 LTS w domyślnej konfiguracji. W standardowych repozytoriach tego dystrybucji znajduje się kilka serwerów VNC: TightVNC, TigerVNC, x11vnc i inne. Zatrzymaliśmy się na TigerVNC — aktualnej gałęzi niepoddawanego wsparciu TightVNC. Konfiguracja innych serwerów przebiega w podobny sposób. Należy również wybrać środowisko graficzne: naszym zdaniem optymalnym rozwiązaniem będzie XFCE ze względu na stosunkowo niskie wymagania dotyczące zasobów obliczeniowych. Chętni mogą zainstalować inne DE lub WM: wszystko zależy od osobistych preferencji, jednak wybór oprogramowania bezpośrednio wpływa na zapotrzebowanie na pamięć RAM i rdzenie obliczeniowe.

VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04

Instalacja środowiska pulpitu 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 należy zainstalować serwer VNC:

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

Uruchamianie go z uprawnieniami superużytkownika to zły pomysł. Tworzymy użytkownika i grupę:

sudo adduser vnc

VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04

Dodajemy użytkownika do grupy sudo, aby mógł rozwiązywać zadania związane z administracją. Jeśli nie ma takiej potrzeby, ten krok można pominąć:

sudo gpasswd -a vnc sudo

W następnym kroku uruchamiamy serwer VNC z uprawnieniami użytkownika vnc, aby utworzyć bezpieczne hasło i pliki konfiguracyjne w katalogu ~/.vnc/. Długość hasła może wynosić od 6 do 8 znaków (dodatkowe znaki są przycinane). W razie potrzeby można również ustawić hasło tylko do wyświetlania, tzn. bez dostępu do klawiatury i myszy. Następujące polecenia wykonuje się w imieniu użytkownika vnc:

su - vnc
vncserver -localhost no

VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04
Domyślnie protokół RFB używa zakresu portów TCP od 5900 do 5906 — są to tzw. porty wyświetlania, z których każdy odpowiada ekranowi serwera X. Porty te są skojarzone z ekranami od :0 do :6. Uruchomiona przez nas instancja serwera VNC nasłuchuje na porcie 5901 (ekran :1). Inne instancje mogą działać na innych portach z ekranami :2, :3 itd. Przed dalszą konfiguracją należy zatrzymać serwer:

vncserver -kill :1

Polecenie powinno wyświetlić mniej więcej taki komunikat: „Killing Xtigervnc process ID 18105… success!”

Podczas uruchamiania TigerVNC wykonuje skrypt ~/.vnc/xstartup w celu konfiguracji ustawień. Stwórzmy własny skrypt, wcześniej zapisując kopię zapasową istniejącego, jeśli on istnieje:

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

Sesja środowiska pulpitu XFCE uruchamiana jest za pomocą następującego skryptu xstartup:

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

Polecenie xrdb jest potrzebne, aby system VNC odczytał plik .Xresources w katalogu domowym. Użytkownik może tam zdefiniować różne parametry graficznego pulpitu: rendering czcionek, kolory terminala, motywy kursora itd. Skrypt należy uczynić wykonywalnym:

chmod 755 ~/.vnc/xstartup

Na tym kończy się konfiguracja serwera VNC. Jeśli uruchomisz go poleceniem vncserver -localhost no (w imieniu użytkownika vnc), będziesz mógł połączyć się z wcześniej ustawionym hasłem i zobaczyć taki widok:

VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04

Uruchamianie usługi przez systemd

Ręczne uruchamianie serwera VNC nie nadaje się do zastosowań w produkcji, dlatego skonfigurujemy usługę systemową. Komendy są wykonywane w imieniu root (używamy sudo). Na początek tworzymy nowy plik jednostki dla naszego serwera:

sudo nano /etc/systemd/system/vncserver@.service

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

[Unit]
Description=Serwer TigerVNC
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 musimy powiadomić systemd o nowym pliku i aktywować go:

sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service

Cyfra 1 w nazwie określa numer ekranu.

Zatrzymujemy serwer VNC, uruchamiamy go jako usługę i sprawdzamy status:

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

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

Jeśli usługa działa, powinniśmy otrzymać mniej więcej taki wynik.

VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04

Podłączenie do pulpitu

Nasza konfiguracja nie wykorzystuje szyfrowania, dlatego pakiety sieciowe mogą być przechwytywane przez osoby trzecie. Ponadto w serwerach VNC dość często znajduje się podatności, więc nie warto otwierać ich na dostęp z internetu. Aby bezpiecznie połączyć się z lokalnego komputera, należy zapakować ruch w tunel SSH, a następnie skonfigurować klienta VNC. W systemie Windows można skorzystać z graficznego klienta SSH (np. PuTTY). Dla bezpieczeństwa TigerVNC na serwerze nasłuchuje tylko na localhost i nie jest bezpośrednio dostępny z publicznych sieci:


sudo netstat -ap |more

VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04
W systemach Linux, FreeBSD, OS X oraz innych systemach podobnych do UNIX tunel z komputera klienta realizowany jest za pomocą narzędzia ssh (na serwerze VNC musi być uruchomiony sshd):

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

Opcja -L przypisuje port 5901 zdalnego połączenia do portu 5901 na localhost. Opcja -C włącza kompresję, a -N informuje narzędzie ssh, że nie ma potrzeby wykonywania zdalnej komendy. Opcja -l określa login dla zdalnego logowania.

Po skonfigurowaniu tunelu na lokalnym komputerze należy uruchomić klienta VNC i nawiązać połączenie z hostem 127.0.0.1:5901 (localhost:5901), używając wcześniej ustalonego hasła do serwera VNC. Teraz możemy bezpiecznie współdziałać poprzez szyfrowany tunel z graficznym środowiskiem pulpitu XFCE na VPS. Na zrzucie ekranu w emulatorze terminala uruchomiona jest narzędzie top, aby pokazać niewielkie zużycie zasobów obliczeniowych przez maszynę wirtualną. W dalszej kolejności wszystko będzie zależało od aplikacji użytkowników.

VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04
Instalacja i konfiguracja serwera VNC w systemie Linux może odbywać się praktycznie na każdym VPS. Nie są potrzebne drogie i wymagające zasobów konfiguracje z emulacją karty graficznej ani zakup komercyjnych licencji na oprogramowanie. Poza omawianą przez nas opcją usługi systemowej istnieją także inne: uruchomienie w trybie demona (przez /etc/rc.local) przy uruchamianiu systemu lub na żądanie przez inetd. Ostatnia opcja jest interesująca dla tworzenia konfiguracji wieloużytkownikowych. Superserwer internetowy uruchomi serwer VNC i połączy go z klientem, a serwer VNC utworzy nowy ekran i rozpocznie sesję. Do autoryzacji wewnątrz niej można użyć graficznego menedżera wyświetlania (na przykład, LightDM), a po rozłączeniu klienta sesja zostanie zakończona, a wszystkie działające programy na ekranie zostaną zamknięte.

VPS na Linux z graficznym interfejsem: uruchamiamy serwer VNC na Ubuntu 18.04

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster