15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
12.12.2023

Як встановити та налаштувати XRDP на Ubuntu 22.04

XRDP — це реалізація з відкритим вихідним кодом сервера протоколу віддаленого робочого столу (RDP) Microsoft для Linux. Він дозволяє будь-якому RDP-сумісному клієнту — включаючи Windows Remote Desktop Connection, Remmina та FreeRDP — встановлювати повноцінний сеанс графічного робочого столу на віддаленій машині Linux. На Ubuntu 22.04 XRDP виступає мостом між RDP-клієнтом і базовим сеансом відображення X11 або Xorg, забезпечуючи чутливий, зашифрований досвід віддаленого робочого столу без необхідності VNC або пропрієтарного програмного забезпечення.

Цей посібник охоплює повну інсталяцію, налаштування SSL-сертифіката, посилення брандмауера, інтеграцію середовища робочого столу та процедуру підключення для XRDP на Ubuntu 22.04 LTS — включаючи граничні випадки та пастки після встановлення, які більшість посібників не згадують.

Що таке XRDP і як він працює

XRDP працює за моделлю клієнт-сервер. Демон xrdp прослуховує TCP-порт 3389 і обробляє RDP-рукостискання, узгодження сеансу та транспортне шифрування через TLS. Внутрішньо він запускає менеджер сеансів xrdp-sesman, який автентифікує користувачів через PAM (Pluggable Authentication Modules) і запускає сеанс X11 через налаштовуваний бекенд — зазвичай Xvfb (віртуальний фреймбуфер) або прямий сеанс Xorg.

Ключові архітектурні компоненти:

  • xrdp daemon — обробляє узгодження протоколу RDP та завершення TLS
  • xrdp-sesman — керує життєвим циклом сеансу користувача та автентифікацією PAM
  • X11 backend — надає графічний фреймбуфер (Xvfb, Xorg або X11rdp)
  • chansrv — обробляє спільний доступ до буфера обміну, перенаправлення аудіо та відображення дисків

Ця архітектура означає, що XRDP не замінює ваш менеджер відображення — він працює поряд з ним, створюючи ізольовані графічні сеанси для кожного автентифікованого користувача.

XRDP проти альтернатив: порівняння протоколів і функцій

ФункціяXRDP (RDP)x11vnc (VNC)NoMachine (NX)TeamViewer
ПротоколRDP (стандарт Microsoft)VNC/RFBПротокол NXПропрієтарний
Нативний клієнт WindowsТак (вбудований MSTSC)Ні (потрібен клієнт)Ні (потрібен клієнт)Ні (потрібен клієнт)
TLS-шифруванняТак (нативне)Опціонально (через stunnel)ТакТак
Підтримка кількох сеансівТакНі (один дисплей)ТакТак
Спільний доступ до буфера обмінуТакТакТакТак
Перенаправлення аудіоТак (через PulseAudio)ОбмеженоТакТак
Продуктивність у WANДобраПоганаВідміннаДобра
Відкритий вихідний кодТак (Apache 2.0)ТакЧастковоНі
Порт3389590040005938

Для команд, які вже використовують інфраструктуру Windows, XRDP є найбільш операційно ефективним вибором, оскільки не потребує жодного додаткового клієнтського програмного забезпечення на машинах Windows.

Передумови

Перш ніж продовжити, переконайтеся в наступному:

  • Запущений сервер або десктопний екземпляр Ubuntu 22.04 LTS
  • Обліковий запис користувача з привілеями sudo
  • Встановлене середовище робочого столу (GNOME, XFCE або MATE — деталі нижче)
  • SSH-доступ до сервера для початкового налаштування
  • UFW або iptables для керування брандмауером

Якщо ви використовуєте безголовий VPS без попередньо встановленого середовища робочого столу, вам необхідно встановити його перед тим, як XRDP зможе надати графічний сеанс. Мінімальна інсталяція XFCE настійно рекомендується для використання віддаленого робочого столу через низький обсяг використання пам’яті.

Крок 1 — Оновлення системних пакетів

Завжди синхронізуйте індекс пакетів і застосовуйте очікувані оновлення перед встановленням нового програмного забезпечення. Це запобігає конфліктам залежностей і гарантує отримання останньої виправленої версії XRDP.

sudo apt update && sudo apt upgrade -y

Перезавантажте, якщо було застосовано оновлення ядра:

sudo reboot

Крок 2 — Встановлення середовища робочого столу (лише для безголових серверів)

Якщо ваш екземпляр Ubuntu 22.04 не має графічного інтерфейсу, встановіть легке середовище робочого столу. XFCE4 є найнадійнішим вибором для XRDP на безголових серверах — сеанси GNOME через XRDP на Ubuntu 22.04 мають відомі проблеми з відображенням, пов’язані з конфліктами Wayland/GDM3.

sudo apt install xfce4 xfce4-goodies -y

Альтернативно, для MATE:

sudo apt install ubuntu-mate-desktop -y

Критична примітка для користувачів GNOME: Ubuntu 22.04 за замовчуванням використовує сеанс Wayland. XRDP не підтримує Wayland нативно. Якщо ви маєте намір використовувати GNOME, ви повинні примусово використовувати сеанси Xorg, відредагувавши /etc/gdm3/custom.conf та розкоментувавши WaylandEnable=false. Навіть тоді GNOME через XRDP на 22.04 часто виводить чорний екран під час входу — XFCE повністю усуває цей клас проблем.

Крок 3 — Встановлення XRDP

Встановіть XRDP з офіційних репозиторіїв Ubuntu:

sudo apt install xrdp -y

Менеджер пакетів встановить xrdp разом із залежністю xorgxrdp, яка надає бекенд драйвера відображення на основі Xorg. Встановлення зазвичай завершується менш ніж за дві хвилини на стандартному VPS з cPanel або фізичному сервері зі стабільним інтернет-з’єднанням.

Крок 4 — Увімкнення та запуск служби XRDP

Увімкніть автоматичний запуск XRDP при завантаженні, а потім запустіть його негайно:

sudo systemctl enable xrdp
sudo systemctl start xrdp

Перевірте, чи служба активна та прослуховує:

sudo systemctl status xrdp

Очікуваний вивід містить Active: active (running) та рядок, що підтверджує прослуховування процесу. Щоб явно підтвердити прив’язку порту:

sudo ss -tlnp | grep 3389

Ви повинні побачити вивід, подібний до:

LISTEN  0  10  0.0.0.0:3389  0.0.0.0:*  users:(("xrdp",pid=XXXX,fd=12))

Якщо порт не прив’язаний, перевірте /var/log/xrdp.log на наявність помилок запуску перед тим, як продовжити.

Крок 5 — Налаштування дозволів SSL-сертифіката

Під час встановлення XRDP створює спеціального системного користувача з іменем xrdp. Демон використовує ключ сертифіката за адресою /etc/ssl/private/ssl-cert-snakeoil.key для шифрування TLS-сеансу. За замовчуванням цей файл належить групі ssl-cert, а користувач xrdp не входить до неї — що спричиняє збої TLS-рукостискання або відкат до незашифрованих сеансів.

Додайте користувача xrdp до групи ssl-cert:

sudo usermod -a -G ssl-cert xrdp

Перезапустіть XRDP, щоб застосувати зміну членства в групі:

sudo systemctl restart xrdp

Примітка для виробничого середовища: Сертифікат ssl-cert-snakeoil є самопідписаним сертифікатом, згенерованим пакетом ssl-cert. Для виробничих середовищ або будь-якого сервера, доступного з інтернету, замініть його дійсним сертифікатом від довіреного CA. Якщо ваш сервер має публічний домен, ви можете використати сертифікат від вашого постачальника SSL-сертифікатів і налаштувати XRDP для посилання на нього через директиви certificate та key_file у /etc/xrdp/xrdp.ini.

Щоб використовувати власний сертифікат:

sudo nano /etc/xrdp/xrdp.ini

Знайдіть і оновіть ці рядки:

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

Крок 6 — Налаштування сеансу робочого столу для XRDP

XRDP зчитує файл конфігурації сеансу для кожного користувача за адресою ~/.xsession або ~/.Xclients, щоб визначити, яке середовище робочого столу запустити. Без цього файлу багато конфігурацій Ubuntu 22.04 виводять сірий або чорний екран після автентифікації.

Для XFCE створіть файл сеансу для вашого користувача:

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

Для MATE:

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

Якщо ви налаштовуєте це для кількох користувачів на виділеному сервері, автоматизуйте цей крок за допомогою циклу оболонки або інструменту керування конфігурацією, наприклад Ansible.

Крок 7 — Налаштування брандмауера

XRDP прослуховує TCP-порт 3389. Ви повинні явно дозволити цей порт через UFW. Однак відкриття RDP безпосередньо в інтернет на 0.0.0.0 є значним ризиком безпеки — RDP є одним із найбільш активно атакованих методом грубої сили сервісів в інтернеті.

Рекомендований підхід: обмежте доступ до певного діапазону IP-адрес або підмережі VPN.

Дозвольте доступ лише з певної довіреної підмережі:

sudo ufw allow from 192.168.1.0/24 to any port 3389

Якщо ви підключаєтеся з однієї відомої IP-адреси:

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

Якщо вам тимчасово потрібно дозволити ширший доступ (не рекомендується для виробничого середовища):

sudo ufw allow 3389/tcp

Перезавантажте та перевірте правила брандмауера:

sudo ufw reload
sudo ufw status verbose

Рекомендації щодо посилення безпеки:

  • Змініть порт за замовчуванням: Відредагуйте /etc/xrdp/xrdp.ini та встановіть port=33890 (або будь-який нестандартний порт), а потім відповідно оновіть правило UFW. Це значно зменшує шум від автоматизованого сканування.
  • Використовуйте fail2ban: Встановіть і налаштуйте fail2ban з пасткою xrdp для блокування IP-адрес після повторних невдалих спроб автентифікації.
  • Тунелювання через SSH: Для максимальної безпеки прив’яжіть XRDP лише до 127.0.0.1 та отримуйте до нього доступ через SSH-тунель. Це повністю усуває пряме відкриття в інтернет.

Щоб прив’язати XRDP лише до localhost:

sudo nano /etc/xrdp/xrdp.ini

Встановіть:

address=127.0.0.1

Потім підключіться через SSH-тунель з вашого клієнта:

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

Направте ваш RDP-клієнт на 127.0.0.1:3389.

Крок 8 — Підключення до віддаленого робочого столу XRDP

З Windows

  1. Натисніть Win + R, введіть mstsc та натисніть Enter, щоб відкрити підключення до віддаленого робочого столу.
  2. У полі Комп’ютер введіть IP-адресу вашого сервера Ubuntu (наприклад, 203.0.113.45).
  3. Натисніть Підключити.
  4. На екрані входу XRDP виберіть тип сеансу (зазвичай Xvnc або Xorg), введіть ім’я користувача та пароль Ubuntu і натисніть OK.

З Linux (Remmina)

  1. Відкрийте Remmina та створіть новий профіль підключення.
  2. Встановіть протокол RDP.
  3. Введіть IP сервера, ім’я користувача та пароль.
  4. Встановіть глибину кольору True color (32 bpp) для найкращої якості зображення.
  5. Підключіться.

З macOS

Використовуйте Microsoft Remote Desktop з Mac App Store — він нативно підтримує RDP і бездоганно працює з XRDP.

Усунення поширених проблем XRDP на Ubuntu 22.04

Чорний екран після входу

Це найпоширеніша проблема на Ubuntu 22.04. Причини та виправлення:

  • Відсутній файл ~/.xsession: Створіть його, як показано в кроці 6.
  • Конфлікт сеансу Wayland: Вимкніть Wayland у /etc/gdm3/custom.conf.
  • Застарілий файл блокування X: Видаліть файли /tmp/.X*-lock та перезапустіть XRDP.

Помилка автентифікації попри правильні облікові дані

  • Перевірте, чи PAM не блокує процес xrdp-sesman: перевірте /var/log/xrdp-sesman.log.
  • Переконайтеся, що обліковий запис користувача не заблоковано: sudo passwd -S username.
  • Підтвердіть, що користувач не зобов’язаний змінити пароль під час наступного входу.

Низька продуктивність або висока затримка

  • Зменшіть глибину кольору в налаштуваннях RDP-клієнта (16-бітний замість 32-бітного).
  • Увімкніть RemoteFX або кодек H.264 у /etc/xrdp/xrdp.ini, якщо ваш клієнт підтримує це.
  • Перейдіть з бекенду Xvnc на Xorg у селекторі сеансів XRDP для кращої продуктивності на серверах з апаратним прискоренням.

Порт 3389 недоступний

  • Підтвердіть, що XRDP працює: sudo systemctl status xrdp
  • Підтвердіть, що UFW не блокує: sudo ufw status
  • Перевірте групи безпеки хмарного провайдера або мережеві ACL — багато провайдерів VPS мають додатковий рівень брандмауера на рівні гіпервізора, який є незалежним від UFW.

Розширені параметри конфігурації

Увімкнення спільного доступу до буфера обміну

Перенаправлення буфера обміну між RDP-клієнтом і віддаленим робочим столом вимагає служби каналу xrdp-chansrv. Вона запускається автоматично разом із сеансом, але якщо буфер обміну не працює, перевірте, чи запущений процес:

ps aux | grep xrdp-chansrv

Якщо він не запущений, перевірте файли журналів ~/.xrdp/ у домашньому каталозі користувача.

Увімкнення перенаправлення аудіо

Встановіть модуль PulseAudio RDP:

sudo apt install pulseaudio-module-xrdp -y

Вийдіть із системи та підключіться знову. Аудіовихід з віддаленого робочого столу буде перенаправлено на динаміки вашого локального клієнта.

Одночасні сеанси кількох користувачів

XRDP підтримує кілька одночасних сеансів з коробки. Кожен автентифікований користувач отримує ізольований сеанс X11. Щоб перевірити активні сеанси:

sudo xrdp-seslist

Для середовищ з багатьма одночасними користувачами — наприклад, робочих станцій розробників або навчальних середовищ — виділений сервер надає необхідний запас CPU та RAM для підтримки кількох графічних сеансів без конкуренції.

Ключові висновки та контрольний список рішень

Перед розгортанням XRDP у виробничому середовищі перевірте кожен із наступних пунктів:

  • Середовище робочого столу встановлено та ~/.xsession налаштовано для кожного користувача (рекомендується XFCE)
  • Користувача xrdp додано до групи ssl-cert — пропуск цього кроку спричиняє помилки TLS
  • Wayland вимкнено при використанні GNOME (/etc/gdm3/custom.conf)
  • Правила брандмауера обмежують порт 3389 лише довіреними IP-адресами — ніколи не відкривайте RDP на 0.0.0.0 на публічному сервері
  • Самопідписаний сертифікат замінено дійсним сертифікатом, виданим CA, для виробничих розгортань
  • fail2ban налаштовано з пасткою XRDP для пом’якшення атак грубої сили
  • Розглянуто SSH-тунель як альтернативу прямому відкриттю порту для середовищ з високим рівнем безпеки
  • Перевірено брандмауер рівня гіпервізора — групи безпеки хмарного провайдера є незалежними від UFW
  • Файли журналів відстежуються за адресами /var/log/xrdp.log та /var/log/xrdp-sesman.log на наявність помилок сеансу

Часті запитання

Чи підтримує XRDP Ubuntu 22.04 з Wayland?

Ні. XRDP вимагає сеансу X11/Xorg. Ubuntu 22.04 за замовчуванням використовує Wayland під GNOME. Ви повинні або вимкнути Wayland у /etc/gdm3/custom.conf, або використовувати середовище робочого столу, яке за замовчуванням використовує Xorg, наприклад XFCE або MATE.

У чому різниця між типами сеансів Xvnc та Xorg у XRDP?

Бекенд Xvnc створює віртуальний фреймбуфер за допомогою VNC внутрішньо, що сумісно з більшістю конфігурацій, але має вищі накладні витрати CPU. Бекенд Xorg використовує драйвер xorgxrdp для прямого рендерингу Xorg, пропонуючи кращу продуктивність і підтримку апаратного прискорення. Використовуйте Xorg за наявності.

Чи можуть кілька користувачів підключатися до XRDP одночасно?

Так. XRDP створює окремий, ізольований сеанс X11 для кожного автентифікованого користувача. Сеанси є незалежними і не заважають один одному, що робить XRDP придатним для багатокористувацького віддаленого доступу на одному сервері.

Чи безпечно відкривати порт XRDP 3389 безпосередньо в інтернет?

Ні. RDP є одним із найбільш активно атакованих протоколів для атак грубої сили та експлуатації. Завжди обмежуйте порт 3389 відомими IP-адресами через правила брандмауера, використовуйте fail2ban і розгляньте тунелювання XRDP через SSH для будь-якого розгортання, доступного з інтернету.

Як видалити XRDP з Ubuntu 22.04?

Виконайте sudo apt purge xrdp -y && sudo apt autoremove -y. Це видаляє пакети XRDP та їх залежності. Також видаліть залишкові файли конфігурації за допомогою sudo rm -rf /etc/xrdp та видаліть правило UFW за допомогою sudo ufw delete allow 3389/tcp.

15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати