Ubuntu Remote Desktop (interfejs graficzny)
Ubuntu Server domyślnie nie zawiera interfejsu graficznego. Można jednak zainstalować taki interfejs i połączyć się z nim zdalnie za pomocą VNC lub RDP. Niniejszy przewodnik omawia obie metody.
Nie należy bezpośrednio udostępniać portów 5901 (VNC) ani 3389 (RDP) w Internecie. Aby zabezpieczyć połączenie, należy skorzystać z tunelu SSH, WireGuard lub innego rozwiązania VPN. Jeśli konieczne jest zezwolenie na ruch przez te porty w zaporze sieciowej, należy ograniczyć dostęp wyłącznie do zaufanych zakresów adresów IP.
W przypadku większości serwerów Ubuntu w środowisku produkcyjnym zalecaną kombinacją jest: środowisko graficzne Xfce, xrdp do zdalnego dostępu oraz WireGuard lub tunel SSH zapewniający bezpieczną łączność.
Co jest potrzebne
- Serwer Ubuntu (20.04 / 22.04 / 24.04)
- Dostęp jako root lub z uprawnieniami sudo
- Komputer kliencki (Windows lub macOS), z którego ma nastąpić połączenie
Zainstaluj środowisko graficzne
Zaktualizuj listę pakietów:
apt update && apt upgrade -y
Zainstaluj minimalne środowisko graficzne GNOME:
apt install ubuntu-desktop-minimal -y
W przypadku serwerów produkcyjnych zazwyczaj zaleca się użycie Xfce — zużywa ono mniej zasobów i działa bardziej niezawodnie przez VNC i xrdp:
apt install xfce4 xfce4-goodies -y
Po zakończeniu instalacji ustaw domyślny tryb rozruchu na tryb graficzny i uruchom ponownie komputer:
systemctl set-default graphical.target reboot
Polecenie ` systemctl set-default graphical.target ` trwale zmienia domyślny tryb rozruchu, dzięki czemu środowisko graficzne uruchamia się automatycznie po każdym ponownym uruchomieniu. Na serwerze bez monitora, gdzie potrzebny jest tylko zdalny dostęp do pulpitu, można pominąć ten krok i po prostu ponownie uruchomić system.
Opcja 1. Połączenie przez VNC
VNC (Virtual Network Computing) pozwala na zdalne wyświetlanie i sterowanie pulpitem. W tej sekcji wykorzystujemy program TigerVNC.
Zainstaluj serwer TigerVNC
apt install tigervnc-standalone-server tigervnc-common -y
Utwórz użytkownika VNC
Uruchom VNC jako użytkownik niebędący rootem. Jeśli jeszcze nie masz takiego konta, utwórz je:
adduser vncuser
Nie dodawaj użytkownika VNC do grupy sudo. Jeśli osoba atakująca uzyska dostęp do sesji VNC, dostęp do sudo zapewni jej pełną kontrolę nad serwerem.
Przełącz się na tego użytkownika:
su - vncuser
Ustaw hasło VNC
vncpasswd
Wprowadź i potwierdź hasło. Gdy pojawi się pytanie „Czy chcesz wprowadzić hasło tylko do przeglądania?”, wpisz n.
VNC wymaga backendu Xorg. W systemie Ubuntu 24.04 środowisko GNOME domyślnie działa na Waylandzie. Jeśli planujesz używać VNC z GNOME, najpierw wyłącz Wayland zgodnie z opisem w sekcji dotyczącej xrdp poniżej (WaylandEnable=false w pliku /etc/gdm3/custom.conf). Bez tego może pojawić się czarny ekran.
W systemie Ubuntu 24.04 pakiet dbus-launch może nie być zainstalowany domyślnie. Jeśli podczas uruchamiania sesji VNC pojawi się błąd „command not found”, zainstaluj go najpierw: apt install dbus-x11 -y
Skonfiguruj sesję VNC
Utwórz katalog konfiguracyjny i plik startowy:
mkdir -p ~/.vnc nano ~/.vnc/xstartup
Wklej poniższy tekst:
#!/bin/bash export XDG_SESSION_TYPE=x11 export GNOME_SHELL_SESSION_MODE=ubuntu unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR exec dbus-launch --exit-with-session gnome-session --session=ubuntu
Jeśli zainstalowano Xfce zamiast GNOME, ostatni wiersz należy zastąpić następującym: exec startxfce4
Nadaj plikowi uprawnienia do wykonywania:
chmod +x ~/.vnc/xstartup
Uruchom serwer VNC
vncserver :1 -geometry 1920x1080 -depth 24
Spowoduje to uruchomienie sesji VNC na wyświetlaczu :1 (port 5901). Wyświetlacz :2 będzie korzystał z portu 5902 i tak dalej.
Aby zatrzymać serwer:
vncserver -kill :1
Otwórz port w zaporze sieciowej
ufw allow 5901/tcp
Jeśli to możliwe, ogranicz dostęp do określonego zakresu adresów IP zamiast zezwalać na wszystkie źródła: ufw allow from 192.168.1.0/24 to any port 5901 proto tcp
Połącz się z systemu Windows
Pobierz i zainstaluj program TightVNC lub RealVNC Viewer.
Otwórz klienta i wpisz: adres_IP_serwera:5901

Po wyświetleniu monitu wprowadź hasło VNC. Po nawiązaniu połączenia zobaczysz pulpit zdalny:

Połączenie z systemu macOS
System macOS posiada wbudowany klient VNC. Otwórz Findera, naciśnij Cmd+K i wpisz:
vnc://your-server-ip:5901
Wprowadź hasło po wyświetleniu monitu.
Ruch VNC nie jest domyślnie szyfrowany. Przekieruj połączenie przez SSH: ssh -L 5901:localhost:5901 user@adres-IP-serwera, a następnie połącz się z localhost:5901 za pomocą klienta VNC.
Opcja 2. Połączenie przez RDP
RDP (Remote Desktop Protocol) to standardowy protokół używany przez Pulpit zdalny systemu Windows. W systemie Ubuntu jest on obsługiwany przez pakiet xrdp.
Sesje GNOME za pośrednictwem xrdp mogą być niestabilne w niektórych wersjach systemu Ubuntu, zwłaszcza gdy włączony jest Wayland. Środowisko Xfce zazwyczaj zapewnia bardziej niezawodne działanie pulpitu zdalnego.
Wyłącz Wayland
xrdp wymaga backendu Xorg. Otwórz plik konfiguracyjny GDM:
nano /etc/gdm3/custom.conf
Znajdź wiersz #WaylandEnable=false, usuń znak # przed nim i zapisz plik:
WaylandEnable=false
Zainstaluj xrdp
apt install xrdp -y
Włącz i uruchom usługę:
systemctl enable --now xrdp
Dodaj użytkownika xrdp do grupy ssl-cert
adduser xrdp ssl-cert
Skonfiguruj plik uruchamiania sesji
Otwórz plik /etc/xrdp/startwm.sh i dodaj następujące wiersze przed ostatnim wierszem exec:
export XDG_SESSION_TYPE=x11 export GNOME_SHELL_SESSION_MODE=ubuntu unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR
Otwórz port w zaporze sieciowej
ufw allow 3389/tcp
Jeśli to możliwe, ogranicz dostęp do określonego zakresu adresów IP: ufw allow from 192.168.1.0/24 to any port 3389 proto tcp
Uruchom ponownie usługę xrdp
systemctl restart xrdp
Połącz się z systemu Windows
Naciśnij klawisze Win+R, wpisz mstsc, a następnie naciśnij Enter. Wprowadź adres IP serwera i kliknij „Połącz”.

Na ekranie logowania do xrdp pozostaw sesję jako Xorg i wprowadź swoją nazwę użytkownika oraz hasło do systemu Ubuntu:

Po zalogowaniu się pojawi się pulpit zdalny:

Połącz się z systemu macOS
Zainstaluj aplikację Microsoft Remote Desktop ze sklepu App Store.
Kliknij „Dodaj komputer”, a następnie wprowadź adres IP serwera.
Zaloguj się, używając nazwy użytkownika i hasła do systemu Ubuntu.
Porównanie: VNC a RDP
| VNC | RDP | |
|---|---|---|
| Protokół | Otwarty standard | Microsoft (implementacja open source za pośrednictwem xrdp) |
| Klient Windows | Wymagane oprogramowanie innych firm | Wbudowany (mstsc) |
| Klient dla systemu macOS | Wbudowany (Finder) | Microsoft Remote Desktop (App Store) |
| Szyfrowanie | Domyślnie brak (użyj tunelu SSH) | TLS (obsługiwane przez xrdp) |
| Wydajność | Umiarkowana | Ogólnie płynniejsze |
| Obsługa wielu użytkowników | Ograniczona | Lepsze |
Rozwiązywanie problemów
Czarny ekran po zalogowaniu się przez RDP — upewnij się, że wymagane zmienne środowiskowe zostały dodane do pliku /etc/xrdp/startwm.sh zgodnie z powyższym opisem oraz że Wayland jest wyłączony w pliku /etc/gdm3/custom.conf. Następnie uruchom ponownie xrdp: systemctl restart xrdp
Odmowa połączenia VNC — sprawdź, czy serwer VNC działa: vncserver -list. Upewnij się, że port 5901 jest otwarty w zaporze sieciowej.
Nie udaje się uruchomić sesji VNC — zamknij sesję i wyczyść pliki blokady, a następnie uruchom ponownie:
vncserver -kill :1 rm -f ~/.vnc/*.log ~/.vnc/*.pid vncserver :1
Rozłączenie lub szary ekran po wprowadzeniu hasła w xrdp — utwórz lub edytuj plik ~/.xsessionrc dla danego użytkownika i dodaj:
export XDG_SESSION_TYPE=x11
Upewnij się również, że użytkownik nie jest jednocześnie zalogowany do lokalnej sesji pulpitu — wyloguj się z sesji lokalnej przed połączeniem przez xrdp.
Błąd uwierzytelniania w xrdp — upewnij się, że logujesz się przy użyciu prawidłowego nazwy użytkownika i hasła systemu Ubuntu, a nie hasła VNC.
xrdp łączy się, ale natychmiast się rozłącza — sprawdź stan obu usług:
systemctl status xrdp systemctl status xrdp-sesman
Nie można uruchomić GNOME przez VNC — w systemie Ubuntu 24.04 może być konieczne oddzielne zainstalowanie pakietu xorg: apt install xorg -y