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

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera RDP na Ubuntu 18.04
В Poprzedni artykuł omawialiśmy uruchamianie serwera VNC na maszynie wirtualnej dowolnego typu. Ta opcja ma wiele wad, z których główną są wysokie wymagania dotyczące przepustowości kanałów transmisji danych. Dziś spróbujemy połączyć się z graficznym pulpitem na Linuksie poprzez RDP (Remote Desktop Protocol). System VNC opiera się na przesyłaniu tablic pikseli za pomocą protokołu RFB (Remote Framebuffer), a protokół RDP umożliwia przesyłanie bardziej skomplikowanych prymitywów graficznych i poleceń wysokiego poziomu. Zwykle jest używany do hostowania usług pulpitu zdalnego w systemie Windows, ale dostępne są również serwery dla systemu Linux.

Spis treści:

Instalacja środowiska graficznego
Rusyfikacja serwera i instalacja oprogramowania
Instalacja i konfiguracja serwera RDP
Konfigurowanie zapory ogniowej
Łączenie z serwerem RDP
Menedżer sesji i sesje użytkowników
Przełączanie układów klawiatury

Instalacja środowiska graficznego

Weźmiemy maszynę wirtualną z Ubuntu Server 18.04 LTS z dwoma rdzeniami obliczeniowymi, czterema gigabajtami pamięci RAM i dwudziestogigabajtowym dyskiem twardym (HDD). Słabsza konfiguracja nie nadaje się do pulpitu graficznego, chociaż zależy to od rozwiązywanych zadań. Nie zapomnij użyć kodu promocyjnego Habrahabr10, aby uzyskać 10% zniżki na swoje zamówienie.

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera RDP 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

Podobnie jak w poprzednim przypadku wybraliśmy XFCE ze względu na jego stosunkowo niskie wymagania dotyczące zasobów obliczeniowych.

Rusyfikacja serwera i instalacja oprogramowania

Często maszyny wirtualne są wdrażane tylko z lokalizacją w języku angielskim. Na komputerze może być potrzebny język rosyjski, który jest łatwy w konfiguracji. Najpierw zainstalujmy tłumaczenia dla programów systemowych:

sudo apt-get install language-pack-ru

Skonfigurujmy lokalizację:

sudo update-locale LANG=ru_RU.UTF-8

Ten sam efekt można osiągnąć ręcznie edytując plik /etc/default/locale.

Do lokalizacji GNOME i KDE w repozytorium znajdują się pakiety językowe-gnome-ru i język-pack-kde-ru - będziesz ich potrzebować, jeśli używasz programów z tych środowisk graficznych. W XFCE tłumaczenia są instalowane wraz z aplikacjami. Następnie możesz zainstalować słowniki:

# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru

# Тезаурус для LibreOffice
sudo apt-get install mythes-ru

# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dict

Ponadto w przypadku niektórych aplikacji może być wymagana instalacja tłumaczeń:

# Браузер Firefox
sudo apt-get install firefox firefox-locale-ru

# Почтовый клиент Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru

# Офисный пакет LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ru

Na tym kończy się przygotowanie środowiska graficznego, pozostaje tylko skonfigurować serwer RDP.

Instalacja i konfiguracja serwera RDP

Repozytoria Ubuntu posiadają swobodnie dystrybuowany serwer Xrdp, z którego będziemy korzystać:

sudo apt-get install xrdp

Jeśli wszystko poszło dobrze, serwer powinien uruchomić się automatycznie:

sudo systemctl status xrdp

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera RDP na Ubuntu 18.04
Serwer Xrdp działa z uprawnieniami użytkownika xrdp i domyślnie pobiera certyfikat /etc/ssl/private/ssl-cert-snakeoil.key, który można zastąpić własnym. Aby mieć dostęp do odczytu pliku należy dodać użytkownika do grupy ssl-cert:

sudo adduser xrdp ssl-cert

Ustawienia domyślne można znaleźć w pliku /etc/default/xrdp, a wszystkie pozostałe pliki konfiguracyjne serwera znajdują się w katalogu /etc/xrdp. Główne parametry znajdują się w pliku xrdp.ini, którego nie trzeba zmieniać. Konfiguracja jest dobrze udokumentowana i dołączone są odpowiednie strony podręcznika:

man xrdp.ini
man xrdp

Pozostaje tylko edytować skrypt /etc/xrdp/startwm.sh, który jest wykonywany podczas inicjowania sesji użytkownika. Na początek zróbmy kopię zapasową skryptu z dystrybucji:

sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh

Aby uruchomić środowisko graficzne XFCE, będziesz potrzebować skryptu podobnego do tego:

#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4

Uwaga: w skryptach lepiej jest wpisać pełną ścieżkę do plików wykonywalnych - jest to dobry zwyczaj. Sprawmy, aby skrypt był wykonywalny i w tym momencie konfigurację serwera Xrdp można uznać za zakończoną:

sudo chmod 755 /etc/xrdp/startwm.sh

Uruchom ponownie serwer:

sudo systemctl restart xrdp

Konfigurowanie zapory ogniowej

Domyślnie Xrdp nasłuchuje portu TCP 3389 na wszystkich interfejsach. W zależności od konfiguracji serwera wirtualnego może być konieczne skonfigurowanie zapory sieciowej Netfilter. W systemie Linux zwykle robi się to za pomocą narzędzia iptables, ale w systemie Ubuntu lepiej jest użyć ufw. Jeżeli znany jest adres IP klienta, konfigurację przeprowadza się za pomocą polecenia:

sudo ufw allow from IP_Address to any port 3389

Możesz zezwolić na połączenia z dowolnego adresu IP w następujący sposób:

sudo ufw allow 3389

Protokół RDP obsługuje szyfrowanie, ale udostępnianie serwera Xrdp sieciom publicznym to zły pomysł. Jeśli klient nie ma stałego adresu IP, serwer powinien nasłuchiwać tylko localhost, aby zwiększyć bezpieczeństwo. Najlepiej uzyskać do niego dostęp poprzez tunel SSH, który w bezpieczny sposób przekieruje ruch z komputera klienckiego. Mamy podobne podejście użyte w poprzednim artykule dla serwera VNC.

Łączenie z serwerem RDP

Aby pracować ze środowiskiem graficznym, lepiej utworzyć osobnego nieuprzywilejowanego użytkownika:

sudo adduser rdpuser

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera RDP 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 rdpuser sudo

Możesz połączyć się z serwerem za pomocą dowolnego klienta RDP, w tym wbudowanego klienta usług pulpitu zdalnego systemu Windows. Jeśli Xrdp nasłuchuje interfejsu zewnętrznego, nie będą potrzebne żadne dodatkowe działania. Wystarczy w ustawieniach połączenia podać adres IP VPS, nazwę użytkownika i hasło. Po podłączeniu zobaczymy coś takiego:

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera RDP na Ubuntu 18.04
Po wstępnej konfiguracji środowiska graficznego otrzymamy pełnoprawny pulpit. Jak widać nie zużywa wielu zasobów, choć wszystko będzie zależeć od używanych aplikacji.

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera RDP na Ubuntu 18.04
Jeśli serwer Xrdp nasłuchuje tylko na localhost, ruch na komputerze klienckim będzie musiał być spakowany w tunelu SSH (sshd musi działać na VPS). W systemie Windows można używać graficznego klienta SSH (na przykład PuTTY), a w systemach UNIX potrzebne jest narzędzie ssh:

ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip

Po zainicjowaniu tunelu klient RDP nie będzie już łączył się ze zdalnym serwerem, ale z hostem lokalnym.

Z urządzeniami mobilnymi jest trudniej: trzeba będzie kupić klientów SSH zdolnych do podniesienia tunelu, a w iOS i iPadOS działanie w tle aplikacji innych firm jest utrudnione ze względu na zbyt dobrą optymalizację zużycia energii. Na iPhonie i iPadzie nie będzie można utworzyć tunelu w osobnej aplikacji; będziesz potrzebować aplikacji harwesterowej, która sama może nawiązać połączenie RDP przez SSH. Takie jak na przykład Zdalny Pro.

Menedżer sesji i sesje użytkowników

Możliwość pracy wielu użytkowników jest zaimplementowana bezpośrednio w serwerze Xrdp i nie wymaga dodatkowej konfiguracji. Po uruchomieniu usługi przez systemd jeden proces działa w trybie demona, nasłuchuje na porcie 3389 i komunikuje się poprzez localhost z menedżerem sesji.

ps aux |grep xrdp

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

sudo netstat -ap |grep xrdp

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera RDP na Ubuntu 18.04
Menedżer sesji zwykle nie jest widoczny dla użytkowników, ponieważ login i hasło określone w ustawieniach klienta są do niego przekazywane automatycznie. Jeżeli tak się nie stanie lub wystąpi błąd podczas uwierzytelniania, zamiast pulpitu pojawi się interaktywne okno logowania.

VPS na Linuksie z interfejsem graficznym: uruchomienie serwera RDP na Ubuntu 18.04
Automatyczne uruchamianie menedżera sesji jest określone w pliku /etc/default/xrdp, a konfiguracja jest przechowywana w pliku /etc/xrdp/sesman.ini. Domyślnie wygląda to mniej więcej tak:

[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh

[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false

[Sessions]

Nie musisz tu nic zmieniać, wystarczy wyłączyć logowanie z uprawnieniami roota (AllowRootLogin=false). Dla każdego użytkownika autoryzowanego w systemie uruchamiany jest oddzielny proces xrdp: jeśli rozłączysz się bez zakończenia sesji, procesy użytkownika będą domyślnie kontynuowane i będziesz mógł ponownie połączyć się z sesją. Ustawienia można zmienić w pliku /etc/xrdp/sesman.ini (sekcja [Sessions]).

Przełączanie układów klawiatury

Zwykle nie ma problemów z dwukierunkowym schowkiem, ale przy rosyjskim układzie klawiatury będziesz musiał trochę pobawić się (rosyjskie ustawienia regionalne powinny już być zainstalowany). Edytujmy ustawienia klawiatury serwera Xrdp:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Musisz dodać następujące linie na końcu pliku konfiguracyjnego:

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru

Pozostaje tylko zapisać plik i zrestartować Xrdp:

sudo systemctl restart xrdp

Jak widać, skonfigurowanie serwera RDP na Linux VPS nie jest trudne, ale Poprzedni artykuł Omówiliśmy już konfigurację VNC. Oprócz tych technologii istnieje jeszcze jedna ciekawa opcja: system X3Go wykorzystujący zmodyfikowany protokół NX 2. Zajmiemy się tym w kolejnej publikacji.

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

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

Dodaj komentarz