Связаться с нами

Xrdp: как удаленно подключаться к рабочему столу Linux

Объясняем, зачем нужен сервер xrdp, как его установить и какие клиенты использовать для подключения к удаленному рабочему столу Linux
Xrdp: как удаленно подключаться к рабочему столу Linux

Представьте типичную задачу администратора: есть Linux-сервер, виртуальная машина в облаке или рабочая станция без монитора. Терминал с SSH есть, но нужно не просто поправить конфиг, а открыть браузер, IDE, графическую консоль, панель управления или приложение с GUI.

В Windows для этого есть привычный сценарий: запускаем Remote Desktop Connection, вводим адрес, логин, пароль и попадаем на удаленный рабочий стол. В Linux похожую функцию выполняет xrdp.

хrdp – это RDP-сервер с открытым исходным кодом для Linux. Он принимает подключение от RDP-клиента и передает пользователю графическую сессию удаленной машины. Сервер поддерживает подключение различных клиентов: FreeRDP, rdesktop, NeutrinoRDP и Microsoft Remote Desktop Client (для Windows, macOS, iOS и Android).

Зачем нужен xrdp, если уже есть RDP?

RDP – это протокол. xrdp – это сервер, который реализует этот протокол на стороне Linux.

В Windows серверная часть RDP обычно уже встроена в редакции Pro, Enterprise и Server. В Linux такой встроенной стандартной RDP-службы обычно нет. Поэтому между RDP-клиентом и Linux-десктопом нужен посредник. Эту роль и берет на себя xrdp.

На практике это полезно в четырех сценариях.

  1. Администрирование. Через удаленный рабочий стол администратор или специалист технической поддержки может открыть браузер, настроить приложение без консольного режима, проверить пользовательский интерфейс или воспроизвести проблему сотрудника. В этом сценарии xrdp не заменяет SSH, а дополняет его. Повседневные задачи администратор выполняет в терминале, а к графической сессии подключается только при необходимости.
  2. Удаленные рабочие места. Компания размещает Linux-среды в дата-центре или облаке, а сотрудникам предоставляет доступ через RDP. Такой подход подходит разработчикам, тестировщикам, аналитикам, инженерам, специалистам технической поддержки и специалистам во многих других сферах.
  3. Лаборатории и обучение. xrdp удобно использовать для виртуальных машин, тестовых стендов и учебных классов. Администратор заранее настраивает Linux-систему и устанавливает нужные программы, после чего пользователи подключаются к готовой среде со своих устройств. Такой подход избавляет от необходимости устанавливать и настраивать одинаковое ПО на десятках компьютеров. Он также позволяет быстро создавать временные рабочие среды для проектов, экспериментов и лабораторных работ.
  4. Централизованная и защищенная работа с данными. В некоторых организациях рабочие данные нельзя хранить на устройствах сотрудников. В этом случае приложения и файлы размещают внутри защищенного контура, а пользователь получает доступ только к удаленному рабочему столу. xrdp можно встроить в такую схему вместе с VPN, firewall, централизованной аутентификацией и журналированием. Это помогает контролировать доступ и снижает риск утечки данных с локальных компьютеров.

Как работает xrdp

Пользователь открывает RDP-клиент, например mstsc в Windows, Remmina в Linux или совместимый клиент на macOS. Вводит адрес Linux-машины и подключается к xrdp.

Сервер xrdp принимает соединение, показывает окно входа, передает логин и пароль в менеджер сессий xrdp-sesman. После успешной аутентификации запускается графическая сессия Linux.

Внутри могут использоваться разные бэкенды. Самый практичный вариант для современных установок, Xorg через xorgxrdp. В документации xrdp сказано, что для лучшего опыта обычно нужны пакеты xrdp и xorgxrdp, а если xorgxrdp недоступен, можно использовать Xvnc.

Сам xrdp не заменяет среду рабочего стола. Для работы по-прежнему требуется Xfce, GNOME, KDE Plasma, MATE или другое окружение. Поэтому установка только пакета xrdp иногда приводит к черному экрану: сервер работает и принимает логин, но графическая сессия не запускается.

Какие технологии стоят за xrdp

В типичной установке есть несколько важных компонентов.

xrdp – основной демон. Он слушает входящие RDP-подключения, обычно на порте 3389/tcp, и отвечает за первичное взаимодействие с клиентом.

xrdp-sesman – менеджер сессий. Он запускает и сопровождает пользовательские сессии. В файле sesman.ini настраиваются, например, лимиты сессий, скрипт запускtlsа рабочего стола, доступ по группам и параметры безопасности. В manpage для sesman.ini указано, что DefaultWindowManager по умолчанию указывает на /etc/xrdp/startwm.sh, а UserWindowManager позволяет использовать пользовательский скрипт запуска.

Xorgxrdp – драйверы для Xorg, которые позволяют X-серверу работать внутри RDP-сессии. Разработчики xorgxrdp прямо указывают, что при входе через RDP-клиент нужно выбирать Xorg, а xrdp-sesman запустит Xorg с конфигурацией, которая активирует модули xorgxrdp.

xrdp-chansrv – сервер каналов RDP. Он отвечает за дополнительные возможности: буфер обмена, звук, перенаправление устройств и другие функции.

Большинство практических конфигураций xrdp по-прежнему опирается на Xorg или Xvnc. Wayland может потребовать дополнительной настройки, поэтому для первой установки удобнее использовать Xorg и легкую среду рабочего стола наподобие Xfce.

Xrdp: как удаленно подключаться к рабочему столу Linux

Безопасность: xrdp нельзя просто выставить в интернет

xrdp поддерживает протокол TLS: на официальном сайте проекта указано, что RDP-транспорт по умолчанию шифруется TLS. Там же перечислены возможности вроде двустороннего буфера обмена, перенаправления звука и подключенных накопителей. Но шифрование транспорта не делает открытый порт 3389/tcp безопасным для публикации в интернете.

Злоумышленики постоянно сканируют RDP-сервисы. Открытый порт привлекает попытки подбора паролей и увеличивает риск эксплуатации уязвимостей. Поэтому необходимо дополнительно настоить сервер. Минимальный набор мер безопасности такой:

  • Не разрешайте подключение на 3389/tcp со всего интернета. Разрешайте подключение только через VPN, локальную сеть или ограниченному списку IP-адресов.
  • Запретите вход пользователя root.
  • Создайте отдельную группу пользователей xrdp.
  • Используйте сложные пароли или внешнюю аутентификацию через PAM, LDAP либо Active Directory.
  • При необходимости отключите буфер обмена и перенаправление устройств.
  • Включите логирование и мониторьте неуспешные попытки входа.

В sesman.ini есть параметры AllowRootLogin, MaxLoginRetry, TerminalServerUsers и AlwaysGroupCheck. Они позволяют ограничить вход отдельной группой и не открывать терминальный сервер всем локальным пользователям.

Пример жесткой настройки доступа:

[Security]
AllowRootLogin=false
MaxLoginRetry=3
TerminalServerUsers=rdpusers
AlwaysGroupCheck=true

После этого необходимо создаеть группу (rdpusers) и добавить в нее нужного пользователя (alice):

sudo groupadd rdpusers
sudo usermod -aG rdpusers alice
sudo systemctl restart xrdp

Практика: установка xrdp

Ниже команды для популярных семейств дистрибутивов. Перед установкой лучше иметь локальный или консольный доступ к машине, чтобы не потерять управление при ошибке в настройке межсетевого экрана.

Ubuntu

На Ubuntu xrdp есть в официальных пакетах. В списке пакетов Ubuntu он представлен для актуальных веток, включая 22.04 LTS, 24.04 LTS и последующие релизы.

Установка базового набора:

sudo apt update
sudo apt install xrdp xorgxrdp xfce4 xfce4-goodies
sudo systemctl enable –now xrdp

Настраиваем Xfce для текущего пользователя:

echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession

На Debian и Ubuntu иногда требуется дать пользователю xrdp доступ к группе сертификатов, если пакет использует системный TLS-ключ из ssl-cert:

sudo usermod -aG ssl-cert xrdp
sudo systemctl restart xrdp

Проверяем, что сервис работает:

systemctl status xrdp
systemctl status xrdp-sesman

Проверяем порт:

sudo ss -ltnp | grep 3389

Если включен ufw, не открывайте порт всем. Лучше разрешить только вашу подсеть:

sudo ufw allow from 10.10.0.0/24 to any port 3389 proto tcp
sudo ufw reload

Debian

Для Debian схема почти такая же.

Команды для установки и запуска:

sudo apt update
sudo apt install xrdp xorgxrdp xfce4 xfce4-goodies
sudo systemctl enable –now xrdp
echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession
sudo systemctl restart xrdp

Для диагностики используйте:

systemctl status xrdp
systemctl status xrdp-sesman
sudo journalctl -u xrdp -n 100
sudo journalctl -u xrdp-sesman -n 100

CentOS, CentOS Stream, RHEL-подобные системы

В мире CentOS и RHEL-подобных дистрибутивов xrdp часто ставят через EPEL. Red Hat описывает EPEL как репозиторий, который поддерживается Fedora packagers и используется для CentOS Stream и RHEL. Для CentOS Stream перед установкой EPEL нужно включить CRB, затем установить epel-release и epel-next-release.

Для CentOS Stream 9:

sudo dnf config-manager –set-enabled crb
sudo dnf install epel-release epel-next-release
sudo dnf install xrdp xorgxrdp xfce4-session xfce4-panel xfce4-terminal
sudo systemctl enable –now xrdp

Настраиваем Xfce:

echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession
sudo systemctl restart xrdp

Открываем доступ только для нужной подсети:

sudo firewall-cmd –permanent –add-rich-rule=’rule family=”ipv4″ source address=”10.10.0.0/24″ port port=”3389″ protocol=”tcp” accept’
sudo firewall-cmd –reload

Если вы работаете не с CentOS Stream, а с Rocky Linux, AlmaLinux или RHEL, команды могут немного отличаться в части репозиториев и названий групп пакетов. Логика та же: включить нужный репозиторий, установить xrdp, xorgxrdp и desktop environment, запустить службу, открыть порт только для доверенной сети.

Настройка xrdp после установки

Настройка графической сессии

Минимальный пользовательский запуск Xfce:

echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession
sudo systemctl restart xrdp

Если нужно задать запуск для всех пользователей, отредактируйте файл /etc/xrdp/startwm.sh. В файле sesman.ini имеется параметр DefaultWindowManager, который задает путь по умолчанию к этому скрипту запуска графического окружения, поэтому это центральная точка запуска графической сессии.

Перед его изменением сделайте копию:

sudo cp /etc/xrdp/startwm.sh /etc/xrdp/startwm.sh.bak
sudo nano /etc/xrdp/startwm.sh

В начало пользовательской части запуска часто добавляют очистку переменных, которые мешают новой удаленной сессии:

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
startxfce4

После изменения перезапустите xrdp:

sudo systemctl restart xrdp

Настройка порта

По умолчанию RDP использует 3389/tcp, и xrdp тоже слушает 3389/tcp. Это указано в официальном README проекта.

Порт меняется в /etc/xrdp/xrdp.ini:

[Globals]
port=3390

После изменения перезапустите xrdp.

Учтите, что смена порта не является полноценной защитой. Она уменьшает количество простых сканирований, но не заменяет VPN, межсетевой экран и надежную аутентификацию.

TLS и сертификаты

В xrdp.ini можно указать сертификат и приватный ключ. Manpage для xrdp.ini описывает параметры certificate и key_file, а также security_layer. При security_layer=tls используется Enhanced RDP Security через TLS.

Пример:

[Globals]
security_layer=tls
certificate=/etc/xrdp/cert.pem
key_file=/etc/xrdp/key.pem

После замены сертификатов проверьте права на приватный ключ. У сервиса xrdp должен быть доступ к ключу, но этот ключ не должен быть открыт всем пользователям системы.

Каналы: буфер обмена, звук, диски

xrdp умеет передавать не только картинку и ввод. Он также может пробрасывать из удаленной сессии буфер обмена, звук и устройства, например, накопители. В xrdp.ini есть раздел Channels: rdpdr отвечает за перенаправление устройств, rdpsnd за звук, cliprdr за буфер обмена.

Если машина используется для работы с чувствительными данными, можно отключить лишнее:

[Channels]
cliprdr=false
rdpdr=false
rdpsnd=false

После изменения перезапустите xrdp.

Как подключиться к xrdp

Windows

Откройте меню Start, наберите Remote Desktop Connection или нажмите Win + R и выполните:

mstsc

Дальше введите адрес вашего xrdp-сервера:

192.168.1.2

Если порт нестандартный:

192.168.1.2:3390

После подключения xrdp покажет экран входа. В поле Session обычно выбирают Xorg. Затем вводят логин и пароль пользователя Linux.

Важный момент: используйте обычного пользователя, не root. Для админских задач внутри сессии есть sudo.

Linux

Один из самых удобных графических клиентов под Linux – Remmina. Использовать его просто: создайте новое подключение, выберите RDP, укажите адрес, логин и пароль. Если нужна динамическая смена размера окна, включите соответствующую опцию в профиле подключения.

Из терминала можно использовать FreeRDP:

xfreerdp /v:192.168.1.50:3389 /u:alice /dynamic-resolution

macOS

На macOS можно использовать RDP-клиент Microsoft из App Store или другой совместимый клиент. xrdp принимает подключения от Microsoft Remote Desktop Client, включая клиент для macOS, iOS и Android.

Сценарий подключения тот же: адрес сервера, порт, логин Linux-пользователя, выбор Xorg на экране входа xrdp.

Диагностика: что делать, если xrdp не работает

Проблема 1: порт не слушает.

Проверьте статус сервисов и сетевых соединений:

systemctl status xrdp
systemctl status xrdp-sesman
sudo ss -ltnp | grep 3389

Проблема 2: подключение не проходит через сеть.

Проверьте межсетевой экран на сервере, security group в облаке, VPN-маршруты и локальный межсетевой экран на клиенте. Для начала убедитесь, что с клиента вообще виден порт 3389 или измененный вами порт.

Проблема 3: после логина черный экран.

Возможные причины:

  • не установлена графическая среда;
  • отсутствует пакет xorgxrdp;
  • выбран неправильный тип сессии;
  • файл ~/.xsession отсутствует или содержит ошибку;
  • пользователь уже работает в локальной графической сессии;
  • запуску мешают переменные окружения.

Быстрый ремонт для Xfce:

sudo apt install xrdp xorgxrdp xfce4 xfce4-goodies
echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession
sudo systemctl restart xrdp

На RHEL-подобной системе используйте dnf и соответствующие пакеты Xfce.

Проблема 4: логин проходит, но сессия сразу закрывается.

Смотрите журналы:

sudo journalctl -u xrdp -n 100
sudo journalctl -u xrdp-sesman -n 100
ls -la ~/.xsession
cat ~/.xsession

Проблема 5: не работает буфер обмена или проброс устройств.

Проверьте раздел Channels в /etc/xrdp/xrdp.ini. Также помните, что включенный параметр в xrdp.ini еще не гарантирует работу функции во всех клиентах и окружениях. Manpage xrdp.ini отдельно предупреждает, что поддержка канала является предварительным условием, но не&nbsp
;гарантирует поддержку этой возможности клиентом или графическим окружением.

Часто задаваемые вопросы (FAQ) по xrdp

хrdp – это сервер или клиент?

Сервер. xrdp ставится на Linux-машину, к которой нужно подключаться. Клиент находится на вашем компьютере: mstsc в Windows, Remmina или FreeRDP в Linux, RDP-клиент на macOS. Официальное описание проекта прямо называет xrdp open-source Remote Desktop Protocol server.

Почему Xfce часто советуют для xrdp

Графическая среда Xfce легковесная, потребляет сравнительно мало памяти, быстро запускается и хорошо работает в X11-сессии. Для удаленной работы это важнее, чем красивые анимации.

GNOME, KDE или Mate тоже можно использовать, но у них чаще всплывают нюансы: Wayland вместо Xorg, конфликты с локальной пользовательской сессией, политики блокировки, дополнительные службы сессии. Поэтому если ваша цель – быстро получить рабочий удаленный Linux-десктоп, Xfce часто оказывается лучшим первым выбором.

Позже, когда базовое подключение заработало, можно экспериментировать с другими графическими средами.

Xrdp: как удаленно подключаться к рабочему столу Linux – изображение 2
Легкая графическая среда Xfce 4.20. Источник: www.xfce.org

Работает ли xrdp на Windows?

Как сервер, xrdp в первую очередь нацелен на GNU/Linux. В README проекта сказано, что xrdp primarily targets GNU/Linux operating system.

Но Windows отлично работает как клиент. То есть схема обычно такая: Windows-клиент подключается к Linux-серверу с xrdp.

xrdp быстрее VNC?

Иногда да, особенно если клиент и сеть хорошо работают с RDP, а удаленная среда легкая. Но все зависит от множества параметров.

Скорость определяют среда рабочего стола, сеть, разрешение экрана, серверный CPU, выбранный бэкенд, настройки цвета, сжатие, клиент и количество графики на экране. xrdp удобен тем, что использует привычный RDP-клиент, поддерживает переподключение к сессии и дополнительные возможности вроде буфера обмена и перенаправления устройств.

Если цель, максимально простой доступ к одному экрану, VNC может быть достаточно. Если цель, интеграция с RDP-клиентами и привычный опыт для Windows-пользователей, xrdp часто удобнее.

Поддерживает ли xrdp передачу звука?

Частично. Обычно надежнее всего работают буфер обмена и перенаправление дисков. Принтеры, смарт-карты, камеры и USB-ключи необходимо проверять в конкретной конфигурации клиента, сервера и политик безопасности. Звук иногда придется отдельно настраивать через PipeWire или PulseAudio-модули, в зависимости от дистрибутива и версии xrdp.

Поддерживает ли xrdp проброс периферии?

Частично да. xrdp поддерживает RDP-каналы для буфера обмена, звука и перенаправления устройств. Но «проброс периферии» не означает, что любое USB-устройство заработает как локальное. Надежнее всего обычно работают буфер обмена и подключенные диски. Принтеры, смарт-карты, камеры и специализированные USB-ключи требуют отдельной проверки в вашей связке «клиент + сервер + политика безопасности».

Xrdp: как удаленно подключаться к рабочему столу Linux

Представьте типичную задачу администратора: есть Linux-сервер, виртуальная машина в облаке или рабочая станция без монитора. Терминал с SSH есть, но нужно не просто поправить конфиг, а открыть браузер, IDE, графическую консоль, панель управления или приложение с GUI.

В Windows для этого есть привычный сценарий: запускаем Remote Desktop Connection, вводим адрес, логин, пароль и попадаем на удаленный рабочий стол. В Linux похожую функцию выполняет xrdp.

хrdp – это RDP-сервер с открытым исходным кодом для Linux. Он принимает подключение от RDP-клиента и передает пользователю графическую сессию удаленной машины. Сервер поддерживает подключение различных клиентов: FreeRDP, rdesktop, NeutrinoRDP и Microsoft Remote Desktop Client (для Windows, macOS, iOS и Android).

Зачем нужен xrdp, если уже есть RDP?

RDP – это протокол. xrdp – это сервер, который реализует этот протокол на стороне Linux.

В Windows серверная часть RDP обычно уже встроена в редакции Pro, Enterprise и Server. В Linux такой встроенной стандартной RDP-службы обычно нет. Поэтому между RDP-клиентом и Linux-десктопом нужен посредник. Эту роль и берет на себя xrdp.

На практике это полезно в четырех сценариях.

  1. Администрирование. Через удаленный рабочий стол администратор или специалист технической поддержки может открыть браузер, настроить приложение без консольного режима, проверить пользовательский интерфейс или воспроизвести проблему сотрудника. В этом сценарии xrdp не заменяет SSH, а дополняет его. Повседневные задачи администратор выполняет в терминале, а к графической сессии подключается только при необходимости.
  2. Удаленные рабочие места. Компания размещает Linux-среды в дата-центре или облаке, а сотрудникам предоставляет доступ через RDP. Такой подход подходит разработчикам, тестировщикам, аналитикам, инженерам, специалистам технической поддержки и специалистам во многих других сферах.
  3. Лаборатории и обучение. xrdp удобно использовать для виртуальных машин, тестовых стендов и учебных классов. Администратор заранее настраивает Linux-систему и устанавливает нужные программы, после чего пользователи подключаются к готовой среде со своих устройств. Такой подход избавляет от необходимости устанавливать и настраивать одинаковое ПО на десятках компьютеров. Он также позволяет быстро создавать временные рабочие среды для проектов, экспериментов и лабораторных работ.
  4. Централизованная и защищенная работа с данными. В некоторых организациях рабочие данные нельзя хранить на устройствах сотрудников. В этом случае приложения и файлы размещают внутри защищенного контура, а пользователь получает доступ только к удаленному рабочему столу. xrdp можно встроить в такую схему вместе с VPN, firewall, централизованной аутентификацией и журналированием. Это помогает контролировать доступ и снижает риск утечки данных с локальных компьютеров.

Как работает xrdp

Пользователь открывает RDP-клиент, например mstsc в Windows, Remmina в Linux или совместимый клиент на macOS. Вводит адрес Linux-машины и подключается к xrdp.

Сервер xrdp принимает соединение, показывает окно входа, передает логин и пароль в менеджер сессий xrdp-sesman. После успешной аутентификации запускается графическая сессия Linux.

Внутри могут использоваться разные бэкенды. Самый практичный вариант для современных установок, Xorg через xorgxrdp. В документации xrdp сказано, что для лучшего опыта обычно нужны пакеты xrdp и xorgxrdp, а если xorgxrdp недоступен, можно использовать Xvnc.

Сам xrdp не заменяет среду рабочего стола. Для работы по-прежнему требуется Xfce, GNOME, KDE Plasma, MATE или другое окружение. Поэтому установка только пакета xrdp иногда приводит к черному экрану: сервер работает и принимает логин, но графическая сессия не запускается.

Какие технологии стоят за xrdp

В типичной установке есть несколько важных компонентов.

xrdp – основной демон. Он слушает входящие RDP-подключения, обычно на порте 3389/tcp, и отвечает за первичное взаимодействие с клиентом.

xrdp-sesman – менеджер сессий. Он запускает и сопровождает пользовательские сессии. В файле sesman.ini настраиваются, например, лимиты сессий, скрипт запускtlsа рабочего стола, доступ по группам и параметры безопасности. В manpage для sesman.ini указано, что DefaultWindowManager по умолчанию указывает на /etc/xrdp/startwm.sh, а UserWindowManager позволяет использовать пользовательский скрипт запуска.

Xorgxrdp – драйверы для Xorg, которые позволяют X-серверу работать внутри RDP-сессии. Разработчики xorgxrdp прямо указывают, что при входе через RDP-клиент нужно выбирать Xorg, а xrdp-sesman запустит Xorg с конфигурацией, которая активирует модули xorgxrdp.

xrdp-chansrv – сервер каналов RDP. Он отвечает за дополнительные возможности: буфер обмена, звук, перенаправление устройств и другие функции.

Большинство практических конфигураций xrdp по-прежнему опирается на Xorg или Xvnc. Wayland может потребовать дополнительной настройки, поэтому для первой установки удобнее использовать Xorg и легкую среду рабочего стола наподобие Xfce.

Xrdp: как удаленно подключаться к рабочему столу Linux

Безопасность: xrdp нельзя просто выставить в интернет

xrdp поддерживает протокол TLS: на официальном сайте проекта указано, что RDP-транспорт по умолчанию шифруется TLS. Там же перечислены возможности вроде двустороннего буфера обмена, перенаправления звука и подключенных накопителей. Но шифрование транспорта не делает открытый порт 3389/tcp безопасным для публикации в интернете.

Злоумышленики постоянно сканируют RDP-сервисы. Открытый порт привлекает попытки подбора паролей и увеличивает риск эксплуатации уязвимостей. Поэтому необходимо дополнительно настоить сервер. Минимальный набор мер безопасности такой:

  • Не разрешайте подключение на 3389/tcp со всего интернета. Разрешайте подключение только через VPN, локальную сеть или ограниченному списку IP-адресов.
  • Запретите вход пользователя root.
  • Создайте отдельную группу пользователей xrdp.
  • Используйте сложные пароли или внешнюю аутентификацию через PAM, LDAP либо Active Directory.
  • При необходимости отключите буфер обмена и перенаправление устройств.
  • Включите логирование и мониторьте неуспешные попытки входа.

В sesman.ini есть параметры AllowRootLogin, MaxLoginRetry, TerminalServerUsers и AlwaysGroupCheck. Они позволяют ограничить вход отдельной группой и не открывать терминальный сервер всем локальным пользователям.

Пример жесткой настройки доступа:

[Security]
AllowRootLogin=false
MaxLoginRetry=3
TerminalServerUsers=rdpusers
AlwaysGroupCheck=true

После этого необходимо создаеть группу (rdpusers) и добавить в нее нужного пользователя (alice):

sudo groupadd rdpusers
sudo usermod -aG rdpusers alice
sudo systemctl restart xrdp

Практика: установка xrdp

Ниже команды для популярных семейств дистрибутивов. Перед установкой лучше иметь локальный или консольный доступ к машине, чтобы не потерять управление при ошибке в настройке межсетевого экрана.

Ubuntu

На Ubuntu xrdp есть в официальных пакетах. В списке пакетов Ubuntu он представлен для актуальных веток, включая 22.04 LTS, 24.04 LTS и последующие релизы.

Установка базового набора:

sudo apt update
sudo apt install xrdp xorgxrdp xfce4 xfce4-goodies
sudo systemctl enable –now xrdp

Настраиваем Xfce для текущего пользователя:

echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession

На Debian и Ubuntu иногда требуется дать пользователю xrdp доступ к группе сертификатов, если пакет использует системный TLS-ключ из ssl-cert:

sudo usermod -aG ssl-cert xrdp
sudo systemctl restart xrdp

Проверяем, что сервис работает:

systemctl status xrdp
systemctl status xrdp-sesman

Проверяем порт:

sudo ss -ltnp | grep 3389

Если включен ufw, не открывайте порт всем. Лучше разрешить только вашу подсеть:

sudo ufw allow from 10.10.0.0/24 to any port 3389 proto tcp
sudo ufw reload

Debian

Для Debian схема почти такая же.

Команды для установки и запуска:

sudo apt update
sudo apt install xrdp xorgxrdp xfce4 xfce4-goodies
sudo systemctl enable –now xrdp
echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession
sudo systemctl restart xrdp

Для диагностики используйте:

systemctl status xrdp
systemctl status xrdp-sesman
sudo journalctl -u xrdp -n 100
sudo journalctl -u xrdp-sesman -n 100

CentOS, CentOS Stream, RHEL-подобные системы

В мире CentOS и RHEL-подобных дистрибутивов xrdp часто ставят через EPEL. Red Hat описывает EPEL как репозиторий, который поддерживается Fedora packagers и используется для CentOS Stream и RHEL. Для CentOS Stream перед установкой EPEL нужно включить CRB, затем установить epel-release и epel-next-release.

Для CentOS Stream 9:

sudo dnf config-manager –set-enabled crb
sudo dnf install epel-release epel-next-release
sudo dnf install xrdp xorgxrdp xfce4-session xfce4-panel xfce4-terminal
sudo systemctl enable –now xrdp

Настраиваем Xfce:

echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession
sudo systemctl restart xrdp

Открываем доступ только для нужной подсети:

sudo firewall-cmd –permanent –add-rich-rule=’rule family=”ipv4″ source address=”10.10.0.0/24″ port port=”3389″ protocol=”tcp” accept’
sudo firewall-cmd –reload

Если вы работаете не с CentOS Stream, а с Rocky Linux, AlmaLinux или RHEL, команды могут немного отличаться в части репозиториев и названий групп пакетов. Логика та же: включить нужный репозиторий, установить xrdp, xorgxrdp и desktop environment, запустить службу, открыть порт только для доверенной сети.

Настройка xrdp после установки

Настройка графической сессии

Минимальный пользовательский запуск Xfce:

echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession
sudo systemctl restart xrdp

Если нужно задать запуск для всех пользователей, отредактируйте файл /etc/xrdp/startwm.sh. В файле sesman.ini имеется параметр DefaultWindowManager, который задает путь по умолчанию к этому скрипту запуска графического окружения, поэтому это центральная точка запуска графической сессии.

Перед его изменением сделайте копию:

sudo cp /etc/xrdp/startwm.sh /etc/xrdp/startwm.sh.bak
sudo nano /etc/xrdp/startwm.sh

В начало пользовательской части запуска часто добавляют очистку переменных, которые мешают новой удаленной сессии:

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
startxfce4

После изменения перезапустите xrdp:

sudo systemctl restart xrdp

Настройка порта

По умолчанию RDP использует 3389/tcp, и xrdp тоже слушает 3389/tcp. Это указано в официальном README проекта.

Порт меняется в /etc/xrdp/xrdp.ini:

[Globals]
port=3390

После изменения перезапустите xrdp.

Учтите, что смена порта не является полноценной защитой. Она уменьшает количество простых сканирований, но не заменяет VPN, межсетевой экран и надежную аутентификацию.

TLS и сертификаты

В xrdp.ini можно указать сертификат и приватный ключ. Manpage для xrdp.ini описывает параметры certificate и key_file, а также security_layer. При security_layer=tls используется Enhanced RDP Security через TLS.

Пример:

[Globals]
security_layer=tls
certificate=/etc/xrdp/cert.pem
key_file=/etc/xrdp/key.pem

После замены сертификатов проверьте права на приватный ключ. У сервиса xrdp должен быть доступ к ключу, но этот ключ не должен быть открыт всем пользователям системы.

Каналы: буфер обмена, звук, диски

xrdp умеет передавать не только картинку и ввод. Он также может пробрасывать из удаленной сессии буфер обмена, звук и устройства, например, накопители. В xrdp.ini есть раздел Channels: rdpdr отвечает за перенаправление устройств, rdpsnd за звук, cliprdr за буфер обмена.

Если машина используется для работы с чувствительными данными, можно отключить лишнее:

[Channels]
cliprdr=false
rdpdr=false
rdpsnd=false

После изменения перезапустите xrdp.

Как подключиться к xrdp

Windows

Откройте меню Start, наберите Remote Desktop Connection или нажмите Win + R и выполните:

mstsc

Дальше введите адрес вашего xrdp-сервера:

192.168.1.2

Если порт нестандартный:

192.168.1.2:3390

После подключения xrdp покажет экран входа. В поле Session обычно выбирают Xorg. Затем вводят логин и пароль пользователя Linux.

Важный момент: используйте обычного пользователя, не root. Для админских задач внутри сессии есть sudo.

Linux

Один из самых удобных графических клиентов под Linux – Remmina. Использовать его просто: создайте новое подключение, выберите RDP, укажите адрес, логин и пароль. Если нужна динамическая смена размера окна, включите соответствующую опцию в профиле подключения.

Из терминала можно использовать FreeRDP:

xfreerdp /v:192.168.1.50:3389 /u:alice /dynamic-resolution

macOS

На macOS можно использовать RDP-клиент Microsoft из App Store или другой совместимый клиент. xrdp принимает подключения от Microsoft Remote Desktop Client, включая клиент для macOS, iOS и Android.

Сценарий подключения тот же: адрес сервера, порт, логин Linux-пользователя, выбор Xorg на экране входа xrdp.

Диагностика: что делать, если xrdp не работает

Проблема 1: порт не слушает.

Проверьте статус сервисов и сетевых соединений:

systemctl status xrdp
systemctl status xrdp-sesman
sudo ss -ltnp | grep 3389

Проблема 2: подключение не проходит через сеть.

Проверьте межсетевой экран на сервере, security group в облаке, VPN-маршруты и локальный межсетевой экран на клиенте. Для начала убедитесь, что с клиента вообще виден порт 3389 или измененный вами порт.

Проблема 3: после логина черный экран.

Возможные причины:

  • не установлена графическая среда;
  • отсутствует пакет xorgxrdp;
  • выбран неправильный тип сессии;
  • файл ~/.xsession отсутствует или содержит ошибку;
  • пользователь уже работает в локальной графической сессии;
  • запуску мешают переменные окружения.

Быстрый ремонт для Xfce:

sudo apt install xrdp xorgxrdp xfce4 xfce4-goodies
echo “startxfce4” > ~/.xsession
chmod 600 ~/.xsession
sudo systemctl restart xrdp

На RHEL-подобной системе используйте dnf и соответствующие пакеты Xfce.

Проблема 4: логин проходит, но сессия сразу закрывается.

Смотрите журналы:

sudo journalctl -u xrdp -n 100
sudo journalctl -u xrdp-sesman -n 100
ls -la ~/.xsession
cat ~/.xsession

Проблема 5: не работает буфер обмена или проброс устройств.

Проверьте раздел Channels в /etc/xrdp/xrdp.ini. Также помните, что включенный параметр в xrdp.ini еще не гарантирует работу функции во всех клиентах и окружениях. Manpage xrdp.ini отдельно предупреждает, что поддержка канала является предварительным условием, но не&nbsp
;гарантирует поддержку этой возможности клиентом или графическим окружением.

Часто задаваемые вопросы (FAQ) по xrdp

хrdp – это сервер или клиент?

Сервер. xrdp ставится на Linux-машину, к которой нужно подключаться. Клиент находится на вашем компьютере: mstsc в Windows, Remmina или FreeRDP в Linux, RDP-клиент на macOS. Официальное описание проекта прямо называет xrdp open-source Remote Desktop Protocol server.

Почему Xfce часто советуют для xrdp

Графическая среда Xfce легковесная, потребляет сравнительно мало памяти, быстро запускается и хорошо работает в X11-сессии. Для удаленной работы это важнее, чем красивые анимации.

GNOME, KDE или Mate тоже можно использовать, но у них чаще всплывают нюансы: Wayland вместо Xorg, конфликты с локальной пользовательской сессией, политики блокировки, дополнительные службы сессии. Поэтому если ваша цель – быстро получить рабочий удаленный Linux-десктоп, Xfce часто оказывается лучшим первым выбором.

Позже, когда базовое подключение заработало, можно экспериментировать с другими графическими средами.

Xrdp: как удаленно подключаться к рабочему столу Linux – изображение 2
Легкая графическая среда Xfce 4.20. Источник: www.xfce.org

Работает ли xrdp на Windows?

Как сервер, xrdp в первую очередь нацелен на GNU/Linux. В README проекта сказано, что xrdp primarily targets GNU/Linux operating system.

Но Windows отлично работает как клиент. То есть схема обычно такая: Windows-клиент подключается к Linux-серверу с xrdp.

xrdp быстрее VNC?

Иногда да, особенно если клиент и сеть хорошо работают с RDP, а удаленная среда легкая. Но все зависит от множества параметров.

Скорость определяют среда рабочего стола, сеть, разрешение экрана, серверный CPU, выбранный бэкенд, настройки цвета, сжатие, клиент и количество графики на экране. xrdp удобен тем, что использует привычный RDP-клиент, поддерживает переподключение к сессии и дополнительные возможности вроде буфера обмена и перенаправления устройств.

Если цель, максимально простой доступ к одному экрану, VNC может быть достаточно. Если цель, интеграция с RDP-клиентами и привычный опыт для Windows-пользователей, xrdp часто удобнее.

Поддерживает ли xrdp передачу звука?

Частично. Обычно надежнее всего работают буфер обмена и перенаправление дисков. Принтеры, смарт-карты, камеры и USB-ключи необходимо проверять в конкретной конфигурации клиента, сервера и политик безопасности. Звук иногда придется отдельно настраивать через PipeWire или PulseAudio-модули, в зависимости от дистрибутива и версии xrdp.

Поддерживает ли xrdp проброс периферии?

Частично да. xrdp поддерживает RDP-каналы для буфера обмена, звука и перенаправления устройств. Но «проброс периферии» не означает, что любое USB-устройство заработает как локальное. Надежнее всего обычно работают буфер обмена и подключенные диски. Принтеры, смарт-карты, камеры и специализированные USB-ключи требуют отдельной проверки в вашей связке «клиент + сервер + политика безопасности».

Консультация по решению

Остались вопросы или требуется дополнительная информация по решению? Оставьте заявку на консультацию, и мы с вами свяжемся!

Задать вопрос

Отвечаем на самые популярные вопросы о KasperskyOS и решениях на ее основе

Перейти в FAQ
Мы используем файлы cookie, чтобы сделать работу с сайтом удобнее.
Продолжая находиться на сайте, вы соглашаетесь с этим. Подробную информацию о файлах cookie можно прочитать здесь.