В
Spis treści:
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.
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
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
Łączenie z serwerem RDP
Aby pracować ze środowiskiem graficznym, lepiej utworzyć osobnego nieuprzywilejowanego użytkownika:
sudo adduser rdpuser
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:
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.
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
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
sudo netstat -ap |grep xrdp
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.
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ć
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
Źródło: www.habr.com