Jak zainstalować i skonfigurować XRDP na Ubuntu 22.04
XRDP to open-source’owa implementacja serwera Microsoft Remote Desktop Protocol (RDP) dla systemu Linux. Umożliwia dowolnemu klientowi zgodnemu z RDP — w tym Windows Remote Desktop Connection, Remmina i FreeRDP — nawiązanie pełnej graficznej sesji pulpitu na zdalnej maszynie z systemem Linux. Na Ubuntu 22.04 XRDP działa jako pomost między klientem RDP a bazową sesją wyświetlania X11 lub Xorg, zapewniając responsywne, szyfrowane zdalne środowisko pulpitu bez konieczności stosowania VNC lub oprogramowania własnościowego.
Ten przewodnik obejmuje pełną instalację, konfigurację certyfikatu SSL, zabezpieczanie zapory sieciowej, integrację środowiska pulpitu oraz procedurę połączenia dla XRDP na Ubuntu 22.04 LTS — w tym przypadki brzegowe i pułapki po instalacji, które większość poradników pomija.
Czym jest XRDP i jak działa
XRDP działa w modelu klient-serwer. Demon xrdp nasłuchuje na porcie TCP 3389 i obsługuje uzgadnianie RDP, negocjację sesji oraz szyfrowanie transportu przez TLS. Wewnętrznie uruchamia menedżera sesji xrdp-sesman, który uwierzytelnia użytkowników przez PAM (Pluggable Authentication Modules) i uruchamia sesję X11 przez konfigurowalny backend — zazwyczaj Xvfb (wirtualny bufor ramki) lub bezpośrednią sesję Xorg.
Kluczowe komponenty architektury to:
- demon xrdp — obsługuje negocjację protokołu RDP i zakończenie TLS
- xrdp-sesman — zarządza cyklem życia sesji użytkownika i uwierzytelnianiem PAM
- backend X11 — zapewnia graficzny bufor ramki (Xvfb, Xorg lub X11rdp)
- chansrv — obsługuje udostępnianie schowka, przekierowanie dźwięku i mapowanie dysków
Ta architektura oznacza, że XRDP nie zastępuje menedżera wyświetlania — działa równolegle z nim, tworząc izolowane sesje graficzne dla każdego uwierzytelnionego użytkownika.
XRDP a alternatywy: porównanie protokołów i funkcji
| Funkcja | XRDP (RDP) | x11vnc (VNC) | NoMachine (NX) | TeamViewer |
|---|---|---|---|---|
| Protokół | RDP (standard Microsoft) | VNC/RFB | Protokół NX | Własnościowy |
| Natywny klient Windows | Tak (wbudowany MSTSC) | Nie (wymaga klienta) | Nie (wymaga klienta) | Nie (wymaga klienta) |
| Szyfrowanie TLS | Tak (natywne) | Opcjonalne (przez stunnel) | Tak | Tak |
| Obsługa wielu sesji | Tak | Nie (pojedynczy wyświetlacz) | Tak | Tak |
| Udostępnianie schowka | Tak | Tak | Tak | Tak |
| Przekierowanie dźwięku | Tak (przez PulseAudio) | Ograniczone | Tak | Tak |
| Wydajność w sieci WAN | Dobra | Słaba | Doskonała | Dobra |
| Open source | Tak (Apache 2.0) | Tak | Częściowo | Nie |
| Port | 3389 | 5900 | 4000 | 5938 |
Dla zespołów korzystających już z infrastruktury Windows, XRDP jest najbardziej efektywnym operacyjnie wyborem, ponieważ nie wymaga żadnego dodatkowego oprogramowania klienckiego na maszynach z systemem Windows.
Wymagania wstępne
Przed przystąpieniem do pracy upewnij się, że spełnione są następujące warunki:
- Działający serwer lub instancja desktopowa Ubuntu 22.04 LTS
- Konto użytkownika z uprawnieniami
sudo - Zainstalowane środowisko pulpitu (GNOME, XFCE lub MATE — szczegóły poniżej)
- Dostęp SSH do serwera w celu wstępnej konfiguracji
- UFW lub iptables dostępne do zarządzania zaporą sieciową
Jeśli korzystasz z bezgłowego VPS bez wstępnie zainstalowanego środowiska pulpitu, musisz je zainstalować przed uruchomieniem XRDP, aby móc korzystać z sesji graficznej. Minimalna instalacja XFCE jest zdecydowanie zalecana do zdalnego korzystania z pulpitu ze względu na niskie zużycie pamięci.
Krok 1 — Aktualizacja pakietów systemowych
Zawsze synchronizuj indeks pakietów i stosuj oczekujące aktualizacje przed instalacją nowego oprogramowania. Zapobiega to konfliktom zależności i zapewnia otrzymanie najnowszej poprawionej wersji XRDP.
sudo apt update && sudo apt upgrade -yUruchom ponownie system, jeśli zastosowano aktualizację jądra:
sudo rebootKrok 2 — Instalacja środowiska pulpitu (tylko serwery bezgłowe)
Jeśli Twoja instancja Ubuntu 22.04 nie ma interfejsu graficznego, zainstaluj lekkie środowisko pulpitu. XFCE4 jest najbardziej niezawodnym wyborem dla XRDP na serwerach bezgłowych — sesje GNOME przez XRDP na Ubuntu 22.04 mają znane problemy z renderowaniem związane z konfliktami Wayland/GDM3.
sudo apt install xfce4 xfce4-goodies -yAlternatywnie, dla MATE:
sudo apt install ubuntu-mate-desktop -yWażna uwaga dla użytkowników GNOME: Ubuntu 22.04 domyślnie używa sesji Wayland. XRDP nie obsługuje natywnie Wayland. Jeśli zamierzasz używać GNOME, musisz wymusić sesje Xorg, edytując /etc/gdm3/custom.conf i odkomentowując WaylandEnable=false. Nawet wtedy GNOME przez XRDP na 22.04 często powoduje czarny ekran przy logowaniu — XFCE całkowicie eliminuje tę klasę problemów.
Krok 3 — Instalacja XRDP
Zainstaluj XRDP z oficjalnych repozytoriów Ubuntu:
sudo apt install xrdp -yMenedżer pakietów zainstaluje xrdp wraz z jego zależnością xorgxrdp, która zapewnia backend sterownika wyświetlania opartego na Xorg. Instalacja zazwyczaj kończy się w mniej niż dwie minuty na standardowym VPS z cPanel lub serwerze bare-metal ze stabilnym połączeniem internetowym.
Krok 4 — Włączenie i uruchomienie usługi XRDP
Włącz XRDP, aby uruchamiał się automatycznie przy starcie systemu, a następnie uruchom go natychmiast:
sudo systemctl enable xrdp
sudo systemctl start xrdpSprawdź, czy usługa jest aktywna i nasłuchuje:
sudo systemctl status xrdpOczekiwane wyjście zawiera Active: active (running) oraz linię potwierdzającą, że proces nasłuchuje. Aby jawnie potwierdzić powiązanie portu:
sudo ss -tlnp | grep 3389Powinieneś zobaczyć wyjście podobne do:
LISTEN 0 10 0.0.0.0:3389 0.0.0.0:* users:(("xrdp",pid=XXXX,fd=12))Jeśli port nie jest powiązany, sprawdź /var/log/xrdp.log pod kątem błędów uruchamiania przed kontynuowaniem.
Krok 5 — Konfiguracja uprawnień certyfikatu SSL
Podczas instalacji XRDP tworzy dedykowanego użytkownika systemowego o nazwie xrdp. Demon używa klucza certyfikatu w /etc/ssl/private/ssl-cert-snakeoil.key do szyfrowania sesji TLS. Domyślnie ten plik należy do grupy ssl-cert, a użytkownik xrdp nie należy do tej grupy — co powoduje błędy uzgadniania TLS lub powrót do nieszyfrowanych sesji.
Dodaj użytkownika xrdp do grupy ssl-cert:
sudo usermod -a -G ssl-cert xrdpUruchom ponownie XRDP, aby zastosować zmianę członkostwa w grupie:
sudo systemctl restart xrdpUwaga produkcyjna: Certyfikat ssl-cert-snakeoil jest certyfikatem z podpisem własnym wygenerowanym przez pakiet ssl-cert. W środowiskach produkcyjnych lub na serwerach dostępnych z internetu zastąp go ważnym certyfikatem od zaufanego CA. Jeśli Twój serwer ma publiczną domenę, możesz użyć certyfikatu od swojego dostawcy certyfikatów SSL i skonfigurować XRDP, aby odwoływał się do niego przez dyrektywy certificate i key_file w /etc/xrdp/xrdp.ini.
Aby użyć niestandardowego certyfikatu:
sudo nano /etc/xrdp/xrdp.iniZnajdź i zaktualizuj te linie:
certificate=/etc/ssl/certs/your-domain.crt
key_file=/etc/ssl/private/your-domain.keyKrok 6 — Konfiguracja sesji pulpitu dla XRDP
XRDP odczytuje plik konfiguracji sesji dla poszczególnych użytkowników w ~/.xsession lub ~/.Xclients, aby określić, które środowisko pulpitu uruchomić. Bez tego pliku wiele konfiguracji Ubuntu 22.04 powoduje szary lub czarny ekran po uwierzytelnieniu.
Dla XFCE utwórz plik sesji dla swojego użytkownika:
echo "xfce4-session" > ~/.xsession
chmod +x ~/.xsessionDla MATE:
echo "mate-session" > ~/.xsession
chmod +x ~/.xsessionJeśli konfigurujesz to dla wielu użytkowników na serwerze dedykowanym, zautomatyzuj ten krok za pomocą pętli powłoki lub narzędzia do zarządzania konfiguracją, takiego jak Ansible.
Krok 7 — Konfiguracja zapory sieciowej
XRDP nasłuchuje na porcie TCP 3389. Musisz jawnie zezwolić na ten port przez UFW. Jednak bezpośrednie udostępnienie RDP w internecie na 0.0.0.0 stanowi poważne zagrożenie bezpieczeństwa — RDP jest jedną z najczęściej atakowanych metodą brute-force usług w internecie.
Zalecane podejście: ogranicz dostęp do określonego zakresu IP lub podsieci VPN.
Zezwól na dostęp tylko z określonej zaufanej podsieci:
sudo ufw allow from 192.168.1.0/24 to any port 3389Jeśli łączysz się z jednego znanego adresu IP:
sudo ufw allow from YOUR.IP.ADDRESS to any port 3389Jeśli musisz tymczasowo zezwolić na szerszy dostęp (niezalecane w środowisku produkcyjnym):
sudo ufw allow 3389/tcpPrzeładuj i zweryfikuj reguły zapory sieciowej:
sudo ufw reload
sudo ufw status verboseZalecenia dotyczące wzmacniania zabezpieczeń:
- Zmień domyślny port: Edytuj
/etc/xrdp/xrdp.inii ustawport=33890(lub dowolny niestandardowy port), a następnie odpowiednio zaktualizuj regułę UFW. Znacznie zmniejsza to szum związany z automatycznym skanowaniem. - Użyj fail2ban: Zainstaluj i skonfiguruj
fail2banz więzieniemxrdp, aby blokować adresy IP po wielokrotnych nieudanych próbach uwierzytelnienia. - Tunelowanie przez SSH: Dla maksymalnego bezpieczeństwa powiąż XRDP tylko z
127.0.0.1i uzyskuj do niego dostęp przez tunel SSH. Całkowicie eliminuje to bezpośrednią ekspozycję w internecie.
Aby powiązać XRDP tylko z localhost:
sudo nano /etc/xrdp/xrdp.iniUstaw:
address=127.0.0.1Następnie połącz się przez tunel SSH ze swojego klienta:
ssh -L 3389:127.0.0.1:3389 user@your-server-ip -NWskaż klientowi RDP adres 127.0.0.1:3389.
Krok 8 — Połączenie ze zdalnym pulpitem XRDP
Z systemu Windows
- Naciśnij
Win + R, wpiszmstsci naciśnij Enter, aby otworzyć Podłączanie pulpitu zdalnego. - W polu Komputer wprowadź adres IP swojego serwera Ubuntu (np.
203.0.113.45). - Kliknij Połącz.
- Na ekranie logowania XRDP wybierz typ sesji (zazwyczaj
XvnclubXorg), wprowadź nazwę użytkownika i hasło Ubuntu, a następnie kliknij OK.
Z systemu Linux (Remmina)
- Otwórz Reminę i utwórz nowy profil połączenia.
- Ustaw protokół na RDP.
- Wprowadź adres IP serwera, nazwę użytkownika i hasło.
- Ustaw głębię kolorów na True color (32 bpp), aby uzyskać najlepszą jakość wizualną.
- Połącz się.
Z systemu macOS
Użyj Microsoft Remote Desktop z Mac App Store — obsługuje RDP natywnie i działa bezproblemowo z XRDP.
Rozwiązywanie typowych problemów z XRDP na Ubuntu 22.04
Czarny ekran po zalogowaniu
Jest to najczęstszy problem na Ubuntu 22.04. Przyczyny i rozwiązania:
- Brakujący plik
~/.xsession: Utwórz go zgodnie z opisem w Kroku 6. - Konflikt sesji Wayland: Wyłącz Wayland w
/etc/gdm3/custom.conf. - Nieaktualne pliki blokady X: Usuń pliki
/tmp/.X*-locki uruchom ponownie XRDP.
Błąd uwierzytelnienia pomimo prawidłowych danych logowania
- Sprawdź, czy PAM nie blokuje procesu
xrdp-sesman: sprawdź/var/log/xrdp-sesman.log. - Upewnij się, że konto użytkownika nie jest zablokowane:
sudo passwd -S username. - Potwierdź, że użytkownik nie jest zobowiązany do zmiany hasła przy następnym logowaniu.
Niska wydajność lub duże opóźnienia
- Zmniejsz głębię kolorów w ustawieniach klienta RDP (16-bitowe zamiast 32-bitowych).
- Włącz RemoteFX lub koder H.264 w
/etc/xrdp/xrdp.ini, jeśli Twój klient to obsługuje. - Przełącz się z backendu
XvncnaXorgw selektorze sesji XRDP, aby uzyskać lepszą wydajność na serwerach z akceleracją sprzętową.
Port 3389 nieosiągalny
- Potwierdź, że XRDP działa:
sudo systemctl status xrdp - Potwierdź, że UFW nie blokuje:
sudo ufw status - Sprawdź grupy zabezpieczeń dostawcy chmury lub listy ACL sieci — wielu dostawców VPS ma dodatkową warstwę zapory sieciowej na poziomie hiperwizora, która jest niezależna od UFW.
Zaawansowane opcje konfiguracji
Włączanie udostępniania schowka
Przekierowanie schowka między klientem RDP a zdalnym pulpitem wymaga usługi kanału xrdp-chansrv. Uruchamia się automatycznie wraz z sesją, ale jeśli schowek nie działa, sprawdź, czy proces jest uruchomiony:
ps aux | grep xrdp-chansrvJeśli nie działa, sprawdź pliki dziennika ~/.xrdp/ w katalogu domowym użytkownika.
Włączanie przekierowania dźwięku
Zainstaluj moduł PulseAudio RDP:
sudo apt install pulseaudio-module-xrdp -yWyloguj się i połącz ponownie. Wyjście audio ze zdalnego pulpitu zostanie przekierowane do głośników lokalnego klienta.
Równoczesne sesje wielu użytkowników
XRDP obsługuje wiele jednoczesnych sesji od razu po instalacji. Każdy uwierzytelniony użytkownik otrzymuje izolowaną sesję X11. Aby zweryfikować aktywne sesje:
sudo xrdp-seslistW środowiskach z wieloma równoczesnymi użytkownikami — takich jak stacje robocze deweloperów lub środowiska szkoleniowe — serwer dedykowany zapewnia zasoby CPU i RAM niezbędne do obsługi wielu sesji graficznych bez rywalizacji o zasoby.
Kluczowe wnioski i lista kontrolna decyzji
Przed wdrożeniem XRDP w środowisku produkcyjnym sprawdź każdy z poniższych punktów:
- Środowisko pulpitu zainstalowane i
~/.xsessionskonfigurowane dla każdego użytkownika (zalecane XFCE) - Użytkownik
xrdpdodany do grupyssl-cert— pominięcie tego powoduje błędy TLS - Wayland wyłączony w przypadku używania GNOME (
/etc/gdm3/custom.conf) - Reguły zapory sieciowej ograniczają port 3389 tylko do zaufanych adresów IP — nigdy nie udostępniaj RDP na 0.0.0.0 na publicznym serwerze
- Certyfikat z podpisem własnym zastąpiony ważnym certyfikatem wydanym przez CA dla wdrożeń produkcyjnych
- fail2ban skonfigurowany z więzieniem XRDP w celu ograniczenia ataków brute-force
- Tunel SSH rozważony jako alternatywa dla bezpośredniej ekspozycji portu w środowiskach o wysokim poziomie bezpieczeństwa
- Zapora sieciowa na poziomie hiperwizora sprawdzona — grupy zabezpieczeń dostawcy chmury są niezależne od UFW
- Pliki dziennika monitorowane w
/var/log/xrdp.logi/var/log/xrdp-sesman.logpod kątem błędów sesji
Często zadawane pytania
Czy XRDP obsługuje Ubuntu 22.04 z Wayland?
Nie. XRDP wymaga sesji X11/Xorg. Ubuntu 22.04 domyślnie używa Wayland pod GNOME. Musisz albo wyłączyć Wayland w /etc/gdm3/custom.conf, albo użyć środowiska pulpitu, które domyślnie korzysta z Xorg, takiego jak XFCE lub MATE.
Jaka jest różnica między typami sesji Xvnc i Xorg w XRDP?
Backend Xvnc tworzy wirtualny bufor ramki przy użyciu VNC wewnętrznie, który jest kompatybilny z większością konfiguracji, ale ma wyższe obciążenie CPU. Backend Xorg używa sterownika xorgxrdp do bezpośredniego renderowania Xorg, oferując lepszą wydajność i obsługę akceleracji sprzętowej. Używaj Xorg, gdy jest dostępny.
Czy wielu użytkowników może łączyć się z XRDP jednocześnie?
Tak. XRDP tworzy oddzielną, izolowaną sesję X11 dla każdego uwierzytelnionego użytkownika. Sesje są niezależne i nie zakłócają się nawzajem, co sprawia, że XRDP nadaje się do wieloużytkownikowego zdalnego dostępu na jednym serwerze.
Czy bezpieczne jest bezpośrednie udostępnienie portu XRDP 3389 w internecie?
Nie. RDP jest jednym z najczęściej atakowanych protokołów metodą brute-force i exploitów. Zawsze ogranicz port 3389 do znanych adresów IP za pomocą reguł zapory sieciowej, używaj fail2ban i rozważ tunelowanie XRDP przez SSH dla każdego wdrożenia dostępnego z internetu.
Jak odinstalować XRDP z Ubuntu 22.04?
Uruchom sudo apt purge xrdp -y && sudo apt autoremove -y. Usuwa to pakiety XRDP i ich zależności. Usuń również pozostałe pliki konfiguracyjne za pomocą sudo rm -rf /etc/xrdp i usuń regułę UFW za pomocą sudo ufw delete allow 3389/tcp.
