Як встановити та налаштувати 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) | Так | Частково | Ні |
| Порт | 3389 | 5900 | 4000 | 5938 |
Для команд, які вже використовують інфраструктуру 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
- Натисніть
Win + R, введітьmstscта натисніть Enter, щоб відкрити підключення до віддаленого робочого столу. - У полі Комп’ютер введіть IP-адресу вашого сервера Ubuntu (наприклад,
203.0.113.45). - Натисніть Підключити.
- На екрані входу XRDP виберіть тип сеансу (зазвичай
XvncабоXorg), введіть ім’я користувача та пароль Ubuntu і натисніть OK.
З Linux (Remmina)
- Відкрийте Remmina та створіть новий профіль підключення.
- Встановіть протокол RDP.
- Введіть IP сервера, ім’я користувача та пароль.
- Встановіть глибину кольору True color (32 bpp) для найкращої якості зображення.
- Підключіться.
З 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.
