Установка и настройка xrdp для использования удаленного рабочего стола в Ubuntu

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

Если вы не знакомы с Linux или для быстрого устранения неполадок, использование удаленного рабочего стола может быть проще, чем доступ к Secure Shell (SSH). В этой статье описывается установка и настройка среды рабочего стола (xfce) и удаленного рабочего стола (xrdp) для виртуальной машины Linux под управлением Ubintu.

Эта статья была написана и протестирована для виртуальной машины с Ubuntu 18.04.

Примечание

Использование удаленного рабочего стола через Интернет приведет к заметной задержке (задержке ввода) по сравнению с использованием локального рабочего стола. На это может влиять несколько факторов, включая скорость локального Интернета и расстояние от центра обработки данных, в котором размещена виртуальная машина. Эта задержка обычно не отражает производительность самой виртуальной машины.

Предварительные требования

Для работы с этой статьей требуется существующая виртуальная машина Ubuntu 18.04 LTS или Ubuntu 20.04 LTS в Azure. Если требуется создать виртуальную машину, используйте один из следующих методов:

Установка среды рабочего стола на виртуальной машине Linux

На большинстве виртуальных машин Linux в Azure по умолчанию не установлена среда рабочего стола. Виртуальные машины Linux обычно управляются с помощью SSH-подключений, а не среды рабочего стола, однако существует несколько сред рабочего стола, которые можно установить. В зависимости от выбранной среды рабочего стола она занимает до 2 ГБ дискового пространства и занимает до десяти минут, чтобы установить и настроить все необходимые пакеты.

С помощью приведенного ниже примера кода можно установить упрощенную среду рабочего стола xfce4 на виртуальной машине Ubuntu. Команды для других дистрибутивов незначительно отличаются. Например, для установки на виртуальной машине Red Hat Enterprise Linux используйте yum и настройте соответствующие правила selinux, а для установки на виртуальной машине SUSE используйте zypper.

Сначала установите SSH-подключение к виртуальной машине. Следующий пример подключается к виртуальной машине myvm.westus.cloudapp.azure.com с использованием имени пользователя azureuser. Используйте собственные значения:

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

Если вы используете Windows и вам нужны дополнительные сведения об использовании SSH, см. статью Использование ключей SSH в Windows.

Затем установите xfce с помощью apt :

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

Установка и настройка сервера удаленных рабочих столов

Теперь, когда у вас установлена среда рабочего стола, настройте службу удаленных рабочих столов для прослушивания входящих подключений удаленного доступа. xrdp — это сервер открытый код протокола удаленного рабочего стола (RDP), который доступен в большинстве дистрибутивов Linux и хорошо работает с xfce. Установите xrdp на виртуальной машине Ubuntu следующим образом:

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

В Ubuntu 20 необходимо предоставить доступ к сертификату пользователю xrdp:

sudo adduser xrdp ssl-cert

Укажите, какую среду рабочего стола должен использовать сервер xrdp при запуске сеанса. Настройте xrdp для использования xfce в качестве среды рабочего стола с помощью следующего кода:

echo xfce4-session >~/.xsession

Перезапустите службу xrdp, чтобы изменения вступили в силу:

sudo service xrdp restart

Настройка пароля локальной учетной записи пользователя

Если вы создали пароль для учетной записи пользователя при создании виртуальной машины, пропустите этот шаг. Если вы используете только проверку подлинности по ключу SSH и не используете пароль локальной учетной записи, укажите пароль перед использованием xrdp для входа в виртуальную машину. Xrdp не может принимать ключи SSH для проверки подлинности. В следующем примере задается пароль для учетной записи пользователя azureuser.

sudo passwd azureuser

Примечание

После указания пароля конфигурация SSHD не обновится таким образом, чтобы разрешить вход с помощью пароля, если такая возможность в настоящее время не настроена. С точки зрения безопасности лучше подключиться к виртуальной машине через туннель SSH с помощью проверки подлинности на основе ключа, а затем подключиться к xrdp. В таком случае можно пропустить следующий шаг по созданию правила группы безопасности сети, разрешающего трафик с удаленного рабочего стола.

Создание правила группы безопасности сети, разрешающего трафик с удаленного рабочего стола

Чтобы трафик с удаленного рабочего стола мог поступать на виртуальную машину Linux, необходимо создать правило группы безопасности сети, разрешающее использовать протокол TCP на порту 3389 для доступа к виртуальной машине. Дополнительные сведения о правилах группы безопасности сети см в разделе Что такое группа безопасности сети? Для создания правила группы безопасности сети можно также использовать портал Azure.

В следующем примере создается правило группы безопасности сети с именем az vm open-port на порту 3389. Из Azure CLI, а не сеанса SSH с виртуальной машиной, откройте следующее правило группы безопасности сети:

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

Подключение к виртуальной машине Linux с помощью клиента удаленного рабочего стола

Откройте локальный клиент удаленного рабочего стола и подключитесь с помощью IP-адреса или DNS-имени виртуальной машины Linux.

Снимок экрана: клиент удаленного рабочего стола.

Введите имя пользователя и пароль для учетной записи пользователя на виртуальной машине:

Снимок экрана: вход в систему xrdp.

После проверки подлинности загрузится среда рабочего стола xfce. Она будет выглядеть примерно так:

Среда рабочего стола xfce при подключении через xrdp

Если локальный RDP-клиент использует проверку подлинности на уровне сети (NLA), то может потребоваться отключить эту настройку подключения. В настоящее время XRDP не поддерживает NLA. Вы можете также воспользоваться альтернативными решениями для RDP, которые поддерживают NLA, такими как FreeRDP.

Диагностика

Если вы не можете подключиться к виртуальной машине Linux с помощью клиента удаленного рабочего стола, используйте netstat на виртуальной машине Linux, чтобы убедиться, что виртуальная машина прослушивает RDP-подключения, как показано ниже.

sudo netstat -plnt | grep rdp

В следующем примере показана виртуальная машина, прослушивающая TCP-порт 3389, как и ожидалось:

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

Если служба xrdp-sesman не прослушивает, на виртуальной машине Ubuntu перезапустите службу следующим образом:

sudo service xrdp restart

Просмотрите журналы в папке /var/log на виртуальной машине Ubuntu, чтобы узнать, почему служба не отвечает. Вы также можете проверять системный журнал на предмет ошибок во время попыток подключения к удаленному рабочему столу:

tail -f /var/log/syslog

В других дистрибутивах Linux, например Red Hat Enterprise Linux и SUSE, способы перезапуска служб и расположение файла журнала могут отличаться.

Если вы не получили никакого ответа в клиенте удаленного рабочего стола и не видите никаких событий в системном журнале, это означает, что трафик удаленного рабочего стола не может достичь виртуальной машины. Проверьте правила групп безопасности сети и убедитесь, что в их числе есть правило, разрешающее трафик по протоколу TCP через порт 3389. Дополнительные сведения см. в статье Устранение проблем с подключением к приложениям на виртуальных машинах Linux в Azure.

Дальнейшие действия

Дополнительные сведения о создании и использовании ключей SSH на виртуальных машинах Linux см. в статье Создание пары из открытого и закрытого ключей SSH для виртуальных машин Linux.

Сведения об использовании SSH в Windows см. в статье Использование SSH с Windows в Azure.