15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
12.12.2023

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

FunkcjaXRDP (RDP)x11vnc (VNC)NoMachine (NX)TeamViewer
ProtokółRDP (standard Microsoft)VNC/RFBProtokół NXWłasnościowy
Natywny klient WindowsTak (wbudowany MSTSC)Nie (wymaga klienta)Nie (wymaga klienta)Nie (wymaga klienta)
Szyfrowanie TLSTak (natywne)Opcjonalne (przez stunnel)TakTak
Obsługa wielu sesjiTakNie (pojedynczy wyświetlacz)TakTak
Udostępnianie schowkaTakTakTakTak
Przekierowanie dźwiękuTak (przez PulseAudio)OgraniczoneTakTak
Wydajność w sieci WANDobraSłabaDoskonałaDobra
Open sourceTak (Apache 2.0)TakCzęściowoNie
Port3389590040005938

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 -y

Uruchom ponownie system, jeśli zastosowano aktualizację jądra:

sudo reboot

Krok 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 -y

Alternatywnie, dla MATE:

sudo apt install ubuntu-mate-desktop -y

Waż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 -y

Menedż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 xrdp

Sprawdź, czy usługa jest aktywna i nasłuchuje:

sudo systemctl status xrdp

Oczekiwane wyjście zawiera Active: active (running) oraz linię potwierdzającą, że proces nasłuchuje. Aby jawnie potwierdzić powiązanie portu:

sudo ss -tlnp | grep 3389

Powinieneś 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 xrdp

Uruchom ponownie XRDP, aby zastosować zmianę członkostwa w grupie:

sudo systemctl restart xrdp

Uwaga 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.ini

Znajdź i zaktualizuj te linie:

certificate=/etc/ssl/certs/your-domain.crt
key_file=/etc/ssl/private/your-domain.key

Krok 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 ~/.xsession

Dla MATE:

echo "mate-session" > ~/.xsession
chmod +x ~/.xsession

Jeś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 3389

Jeśli łączysz się z jednego znanego adresu IP:

sudo ufw allow from YOUR.IP.ADDRESS to any port 3389

Jeśli musisz tymczasowo zezwolić na szerszy dostęp (niezalecane w środowisku produkcyjnym):

sudo ufw allow 3389/tcp

Przeładuj i zweryfikuj reguły zapory sieciowej:

sudo ufw reload
sudo ufw status verbose

Zalecenia dotyczące wzmacniania zabezpieczeń:

  • Zmień domyślny port: Edytuj /etc/xrdp/xrdp.ini i ustaw port=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 fail2ban z więzieniem xrdp, aby blokować adresy IP po wielokrotnych nieudanych próbach uwierzytelnienia.
  • Tunelowanie przez SSH: Dla maksymalnego bezpieczeństwa powiąż XRDP tylko z 127.0.0.1 i 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.ini

Ustaw:

address=127.0.0.1

Następnie połącz się przez tunel SSH ze swojego klienta:

ssh -L 3389:127.0.0.1:3389 user@your-server-ip -N

Wskaż klientowi RDP adres 127.0.0.1:3389.

Krok 8 — Połączenie ze zdalnym pulpitem XRDP

Z systemu Windows

  1. Naciśnij Win + R, wpisz mstsc i naciśnij Enter, aby otworzyć Podłączanie pulpitu zdalnego.
  2. W polu Komputer wprowadź adres IP swojego serwera Ubuntu (np. 203.0.113.45).
  3. Kliknij Połącz.
  4. Na ekranie logowania XRDP wybierz typ sesji (zazwyczaj Xvnc lub Xorg), wprowadź nazwę użytkownika i hasło Ubuntu, a następnie kliknij OK.

Z systemu Linux (Remmina)

  1. Otwórz Reminę i utwórz nowy profil połączenia.
  2. Ustaw protokół na RDP.
  3. Wprowadź adres IP serwera, nazwę użytkownika i hasło.
  4. Ustaw głębię kolorów na True color (32 bpp), aby uzyskać najlepszą jakość wizualną.
  5. 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*-lock i 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 Xvnc na Xorg w 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-chansrv

Jeś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 -y

Wyloguj 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-seslist

W ś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 ~/.xsession skonfigurowane dla każdego użytkownika (zalecane XFCE)
  • Użytkownik xrdp dodany do grupy ssl-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.log i /var/log/xrdp-sesman.log pod 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.

15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij