Instalowanie i konfigurowanie programu xrdp do korzystania z pulpitu zdalnego z systemem Ubuntu

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Jeśli dopiero zaczynasz korzystać z systemu Linux lub w przypadku scenariuszy szybkiego rozwiązywania problemów, korzystanie z pulpitu zdalnego może być łatwiejsze niż dostęp do protokołu Secure Shell (SSH). W tym artykule opisano sposób instalowania i konfigurowania środowiska pulpitu stacjonarnego (xfce) i pulpitu zdalnego (xrdp) dla maszyny wirtualnej z systemem Linux z systemem Ubuntu.

Artykuł został napisany i przetestowany przy użyciu maszyny wirtualnej z systemem Ubuntu 18.04.

Uwaga

Korzystanie z pulpitu zdalnego przez Internet spowoduje zauważalne "opóźnienie" (opóźnienie wejściowe) w porównaniu z użyciem pulpitu lokalnego. Może to mieć wpływ na wiele czynników, w tym lokalną szybkość internetu i odległość od centrum danych, w którym jest hostowana maszyna wirtualna. To opóźnienie zwykle nie odzwierciedla wydajności samej maszyny wirtualnej.

Wymagania wstępne

Ten artykuł wymaga istniejącej maszyny wirtualnej z systemem Ubuntu 18.04 LTS lub Ubuntu 20.04 LTS na platformie Azure. Jeśli musisz utworzyć maszynę wirtualną, użyj jednej z następujących metod:

Instalowanie środowiska pulpitu na maszynie wirtualnej z systemem Linux

Większość maszyn wirtualnych z systemem Linux na platformie Azure nie ma domyślnie zainstalowanego środowiska klasycznego. Maszyny wirtualne z systemem Linux są często zarządzane przy użyciu połączeń SSH, a nie środowiska pulpitu, jednak istnieje kilka środowisk klasycznych, które można zainstalować. W zależności od wybranego środowiska klasycznego zużywa do 2 GB miejsca na dysku i zajmuje do dziesięciu minut zarówno zainstalowanie, jak i skonfigurowanie wszystkich wymaganych pakietów.

Poniższy przykład instaluje lekkie środowisko klasyczne xfce4 na maszynie wirtualnej z systemem Ubuntu. Polecenia dla innych dystrybucji różnią się nieco (użyj yum polecenia do zainstalowania w systemie Red Hat Enterprise Linux i skonfiguruj odpowiednie selinux reguły lub użyj zypper polecenia do zainstalowania na platformie SUSE, na przykład).

Najpierw przesłonięć protokół SSH do maszyny wirtualnej. Poniższy przykład łączy się z maszyną wirtualną o nazwie myvm.westus.cloudapp.azure.com przy użyciu nazwy użytkownika azureuser. Użyj własnych wartości:

ssh azureuser@myvm.westus.cloudapp.azure.com

Jeśli używasz systemu Windows i potrzebujesz więcej informacji na temat korzystania z protokołu SSH, zobacz How to use SSH keys with Windows (Jak używać kluczy SSH w systemie Windows).

Następnie zainstaluj środowisko xfce przy użyciu polecenia apt :

sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install xfce4
sudo apt install xfce4-session

Instalowanie i konfigurowanie serwera pulpitu zdalnego

Po zainstalowaniu środowiska pulpitu skonfiguruj usługę pulpitu zdalnego do nasłuchiwania przychodzących połączeń dostępu zdalnego. xrdp to serwer open source Remote Desktop Protocol (RDP), który jest dostępny w większości dystrybucji systemu Linux i działa dobrze w środowisku xfce. Zainstaluj środowisko xrdp na maszynie wirtualnej z systemem Ubuntu w następujący sposób:

sudo apt-get -y install xrdp
sudo systemctl enable xrdp

W systemie Ubuntu 20 musisz udzielić dostępu do certyfikatu użytkownikowi xrdp:

sudo adduser xrdp ssl-cert

Poinformuj xrdp, jakiego środowiska klasycznego używać podczas uruchamiania sesji. Skonfiguruj środowisko xrdp, aby używać środowiska xfce w następujący sposób:

echo xfce4-session >~/.xsession

Uruchom ponownie usługę xrdp, aby zmiany zaczęły obowiązywać w następujący sposób:

sudo service xrdp restart

Ustawianie hasła konta użytkownika lokalnego

Jeśli podczas tworzenia maszyny wirtualnej utworzono hasło dla konta użytkownika, pomiń ten krok. Jeśli używasz tylko uwierzytelniania klucza SSH i nie masz ustawionego hasła konta lokalnego, określ hasło przed użyciem narzędzia xrdp do zalogowania się do maszyny wirtualnej. Program xrdp nie może zaakceptować kluczy SSH na potrzeby uwierzytelniania. Poniższy przykład określa hasło konta użytkownika azureuser:

sudo passwd azureuser

Uwaga

Określenie hasła nie powoduje zaktualizowania konfiguracji dysku SSHD, aby zezwolić na logowania haseł, jeśli obecnie nie. Z perspektywy zabezpieczeń możesz połączyć się z maszyną wirtualną za pomocą tunelu SSH przy użyciu uwierzytelniania opartego na kluczach, a następnie nawiązać połączenie z narzędziem xrdp. Jeśli tak, pomiń poniższy krok tworzenia reguły sieciowej grupy zabezpieczeń, aby zezwolić na ruch pulpitu zdalnego.

Tworzenie reguły sieciowej grupy zabezpieczeń dla ruchu pulpitu zdalnego

Aby zezwolić na ruch pulpitu zdalnego do maszyny wirtualnej z systemem Linux, należy utworzyć regułę sieciowej grupy zabezpieczeń, która zezwala na połączenie protokołu TCP na porcie 3389 z maszyną wirtualną. Aby uzyskać więcej informacji na temat reguł sieciowej grupy zabezpieczeń, zobacz Co to jest sieciowa grupa zabezpieczeń? Można również użyć Azure Portal, aby utworzyć regułę sieciowej grupy zabezpieczeń.

Poniższy przykład tworzy regułę sieciowej grupy zabezpieczeń za pomocą polecenia az vm open-port na porcie 3389. W interfejsie wiersza polecenia platformy Azure, a nie sesji SSH do maszyny wirtualnej, otwórz następującą regułę sieciowej grupy zabezpieczeń:

az vm open-port --resource-group myResourceGroup --name myVM --port 3389

Łączenie maszyny wirtualnej z systemem Linux przy użyciu klienta pulpitu zdalnego

Otwórz lokalnego klienta pulpitu zdalnego i połącz się z adresem IP lub nazwą DNS maszyny wirtualnej z systemem Linux.

Zrzut ekranu przedstawiający klienta pulpitu zdalnego.

Wprowadź nazwę użytkownika i hasło dla konta użytkownika na maszynie wirtualnej w następujący sposób:

Zrzut ekranu przedstawiający ekran logowania xrdp.

Po uwierzytelnieniu środowisko pulpitu xfce zostanie załadowane i będzie wyglądać podobnie do następującego przykładu:

środowisko pulpitu xfce za pomocą narzędzia xrdp

Jeśli lokalny klient protokołu RDP używa uwierzytelniania na poziomie sieci (NLA), może być konieczne wyłączenie tego ustawienia połączenia. XRDP nie obsługuje obecnie nlA. Możesz również przyjrzeć się alternatywnym rozwiązaniom RDP, które obsługują nlA, takie jak FreeRDP.

Rozwiązywanie problemów

Jeśli nie możesz nawiązać połączenia z maszyną wirtualną z systemem Linux przy użyciu klienta pulpitu zdalnego, użyj go netstat na maszynie wirtualnej z systemem Linux, aby sprawdzić, czy maszyna wirtualna nasłuchuje połączeń RDP w następujący sposób:

sudo netstat -plnt | grep rdp

W poniższym przykładzie pokazano, że maszyna wirtualna nasłuchuje na porcie TCP 3389 zgodnie z oczekiwaniami:

tcp     0     0      127.0.0.1:3350     0.0.0.0:*     LISTEN     53192/xrdp-sesman
tcp     0     0      0.0.0.0:3389       0.0.0.0:*     LISTEN     53188/xrdp

Jeśli usługa xrdp-sesman nie nasłuchuje, na maszynie wirtualnej z systemem Ubuntu uruchom ponownie usługę w następujący sposób:

sudo service xrdp restart

Przejrzyj dzienniki na /var/log na maszynie wirtualnej z systemem Ubuntu, aby uzyskać wskazówki, dlaczego usługa może nie odpowiadać. Dziennik systemu można również monitorować podczas próby wyświetlenia błędów podczas połączenia pulpitu zdalnego:

tail -f /var/log/syslog

Inne dystrybucje systemu Linux, takie jak Red Hat Enterprise Linux i SUSE, mogą mieć różne sposoby ponownego uruchamiania usług i alternatywnych lokalizacji plików dziennika do przejrzenia.

Jeśli nie otrzymasz żadnej odpowiedzi w kliencie pulpitu zdalnego i nie widzisz żadnych zdarzeń w dzienniku systemu, to zachowanie wskazuje, że ruch pulpitu zdalnego nie może nawiązać połączenia z maszyną wirtualną. Przejrzyj reguły sieciowej grupy zabezpieczeń, aby upewnić się, że masz regułę zezwalania na protokół TCP na porcie 3389. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z łącznością aplikacji.

Następne kroki

Aby uzyskać więcej informacji na temat tworzenia i używania kluczy SSH z maszynami wirtualnymi z systemem Linux, zobacz Create SSH keys for Linux VMs in Azure (Tworzenie kluczy SSH dla maszyn wirtualnych z systemem Linux na platformie Azure).

Aby uzyskać informacje na temat korzystania z protokołu SSH z systemu Windows, zobacz How to use SSH keys with Windows (Jak używać kluczy SSH w systemie Windows).