Терминальный сервер в Linux на базе xrdp

3.1/5 - (17 голосов)

Одной из задач по текущему проекту является развернуть терминальный сервер на базе РЕД ОС и в следующих заметках я попробую разные доступные варианты. Начнем пожалуй с xrdp и это open source решение и даже работает.

Что такое XRDP

XRDP (X Remote Desktop Protocol) — это открытая реализация сервера Microsoft Remote Desktop Protocol (RDP) для UNIX‑подобных систем (Linux, BSD и др.). Позволяет удалённо подключаться к графической среде Linux с других устройств — например, с Windows‑ПК через стандартный клиент Remote Desktop Connection.

По сути, XRDP даёт возможность:

  • видеть рабочий стол Linux на удалённой машине;
  • запускать графические приложения;
  • управлять системой, как если бы вы сидели перед ней.

Как работает (в общих чертах)

  1. На Linux‑машине запущен сервер XRDP.
  2. Клиент (например, Windows RDP) подключается к серверу по протоколу RDP (по умолчанию порт 3389).
  3. XRDP создаёт или присоединяется к графической сессии (X11, Xvnc и т. п.) и передаёт экран, ввод клавиатуры/мыши.
  4. Пользователь работает в удалённой графической среде.

Достоинства

  • Совместимость с RDP‑клиентами
    Работает со стандартным клиентом Windows, а также с кросс‑платформенными (например, Remmina, FreeRDP).
  • Простота настройки
    Базовая установка и запуск обычно занимают несколько команд; конфигурация — через текстовые файлы.
  • Открытый исходный код
    Бесплатное ПО с активным сообществом, возможность доработки под свои нужды.
  • Поддержка нескольких сессий
    Можно настроить вход для разных пользователей и параллельные сессии (в зависимости от бэкенда).
  • Интеграция с Linux‑окружением
    Поддерживает популярные DE (GNOME, KDE, Xfce и др.) и может использовать VNC в качестве бэкенда.
  • Шифрование
    Поддерживает SSL/TLS для защищённой передачи данных (настраивается).

Недостатки

  • Производительность
    По сравнению с локальным рабочим столом может быть заметна задержка, особенно при слабой сети или тяжёлой графике.
  • Ограниченная поддержка 3D/ускорения
    Сложные графические приложения (3D‑моделирование, игры) работают плохо или не работают вовсе.
  • Проблемы с некоторыми DE и приложениями
    Не все окружения рабочего стола и приложения идеально ведут себя в удалённой сессии (например, могут быть проблемы с масштабированием, клавиатурой, буфером обмена).
  • Безопасность
    По умолчанию настройки могут быть не максимально защищёнными; требуется ручная настройка SSL, фаервола, аутентификации.
  • Зависимость от бэкенда
    XRDP сам по себе — лишь «прослойка»; качество сессии зависит от того, что используется внизу (X11, VNC и т. п.).
  • Ограниченная поддержка аудио/видео
    Передача звука и видео может требовать дополнительной настройки и не всегда стабильна.
  • Обновления и совместимость
    Иногда новые версии DE или X‑сервера могут ломать совместимость; требуется следить за обновлениями XRDP.

Базовая установка xrdp

Текущая версия xrdp v0.10.4.1 в пакетной базе РЕД ОС на данный момент так-же 0.10.4.1 и следовательно для получения текущей версии ничего из исходных кодов нам собирать не требуется.

# dnf info xrdp.x86_64
Последняя проверка окончания срока действия метаданных: 1 day, 23:49:58 назад, Пн 01 дек 2025 10:20:19.
Имеющиеся пакеты
Имя          : xrdp
Эпоха        : 1
Версия       : 0.10.4.1
Выпуск       : 1.red80
Архитектура  : x86_64
Размер       : 609 k
Источник     : xrdp-0.10.4.1-1.red80.src.rpm
Репозиторий  : updates
Краткое опис : Open source remote desktop protocol (RDP) server
URL          : http://www.xrdp.org/
Лицензия     : ASL 2.0 and GPLv2+ and MIT
Описание     : xrdp provides a fully functional RDP server compatible with a wide range
             : of RDP clients, including FreeRDP and Microsoft RDP client.

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

# dnf install xrdp.x86_64

Настраиваем запуск xrdp.

# systemctl enable --now xrdp xrdp-sesman

Добавляем пользователя в группу xrdp.

# gpasswd -a chernousov xrdp

Подключаемся при помощи xfreerdp и проверяем, что удаленное подключение работает.

$ xfreerdp3 /v:10.213.7.2 /u:chernousov /f /d:IPA

В идеале после ввода пароля вы должны войти на рабочий стол.

Дополнительные настройки xrdp

Настройки xrdp находятся в файле /etc/xrdp/sesman.ini и /etc/xrdp/xrdp.ini вот описания наиболее интересных для тонкой настройки параметров.

Основные настройки XRDP хранятся в нескольких конфигурационных файлах (в зависимости от дистрибутива пути могут незначительно различаться):

  • /etc/xrdp/xrdp.ini — главный файл, управляет общим поведением сервера;
  • /etc/xrdp/sesman.ini — настройки менеджера сессий (аутентификация, запуск окружения и т. п.);
  • иногда дополнительно: /etc/xrdp/startwm.sh — скрипт, определяющий, какое графическое окружение запускать.

Ниже — разбор наиболее важных параметров в каждом из них.

1. /etc/xrdp/xrdp.ini

Этот файл задаёт сетевые настройки, режимы работы и базовые параметры сессий.

  • port
    Порт, на котором слушает XRDP (по умолчанию 3389).
    Пример: port=3389
    Важно: при смене порта нужно открыть его в фаерволе.
  • listen_address
    IP‑адрес, на котором сервер принимает подключения.
    Примеры:
  • listen_address=0.0.0.0 — слушать на всех интерфейсах;
  • listen_address=192.168.1.100 — только на конкретном IP.
  • max_sessions
    Максимальное число одновременных сессий.
    Пример: max_sessions=10
  • idle_timeout
    Время (в секундах), через которое неактивная сессия будет завершена.
    Пример: idle_timeout=1800 (30 минут).
  • security_layer
    Уровень безопасности:
  • rdp — базовый RDP‑шифрование (слабее);
  • tls — использование TLS/SSL (рекомендуется);
  • negotiate — попытка согласовать лучший вариант.
    Пример: security_layer=tls
  • certificate и key_file
    Пути к SSL‑сертификату и закрытому ключу (если включён TLS).
    Пример:
  certificate=/etc/xrdp/cert.pem
  key_file=/etc/xrdp/key.pem
  • crypt_level
    Уровень шифрования: low, medium, high.
    Пример: crypt_level=high
  • allow_multimon
    Разрешить использование нескольких мониторов на клиенте.
    Пример: allow_multimon=true
  • bitmap_cache
    Включить кэширование изображений для ускорения отрисовки.
    Пример: bitmap_cache=true
  • max_bpp
    Максимальная глубина цвета (bits per pixel): 8, 16, 24, 32.
    Пример: max_bpp=24
  • autorun
    Команда, запускаемая при входе (например, запуск определённого DE).
    Пример: autorun=xfce4-session
  • [Channels]
    Секция, включающая/отключающая RDP‑каналы (буфер обмена, диски, принтер и т. п.).
    Пример:
  cliprdr=true    # буфер обмена
  drdynvc=true    # динамические каналы
  disk=true       # подключение локальных дисков

2. /etc/xrdp/sesman.ini

Этот файл управляет аутентификацией, сессиями и окружением.

  • ListenAddress и ListenPort
    Адрес и порт, на которых слушает менеджер сессий (обычно 127.0.0.1:3350).
    Пример:
  ListenAddress=127.0.0.1
  ListenPort=3350
  • EnableUserWindowManager
    Если true, запускает пользовательский WM (окно‑менеджер) вместо системного.
    Пример: EnableUserWindowManager=true
  • DefaultWindowManager
    Команда для запуска оконного менеджера по умолчанию (если не указано иное в startwm.sh).
    Пример: DefaultWindowManager=startxfce4
  • KillDisconnected
    Автоматически завершать сессии, от которых отключился клиент.
    Пример: KillDisconnected=true
  • IdleTimeLimit
    Время простоя (в секундах) до автоматического завершения сессии.
    Пример: IdleTimeLimit=1800
  • MaxLoginRetry
    Максимальное число неудачных попыток входа перед блокировкой.
    Пример: MaxLoginRetry=3
  • TerminalServerUsers
    Группа пользователей, которым разрешён вход (если пусто — всем).
    Пример: TerminalServerUsers=tsusers
  • AlwaysGroupCheck
    Всегда проверять принадлежность к группе TerminalServerUsers.
    Пример: AlwaysGroupCheck=true
  • Autologin
    Включить автовход (не рекомендуется из соображений безопасности).
    Пример: Autologin=false
  • SessionType
    Тип сессии: Xorg, X11rdp, Xvnc и др.
    Пример: SessionType=Xorg
    Примечание: Xorg — современный вариант; Xvnc — если нужны совместимости с VNC.
  • SessionEnv
    Дополнительные переменные окружения для сессий.
    Пример:
  SessionEnv=LC_ALL=en_US.UTF-8
  SessionEnv=LANG=en_US.UTF-8

3. /etc/xrdp/startwm.sh

Это скрипт (а не INI‑файл), который определяет, какое графическое окружение запускать при входе.

  • Основные задачи скрипта:
  • проверить, есть ли у пользователя предпочтительное окружение (например, через ~/.xsession);
  • запустить дефолтный WM/DE (XFCE, GNOME, KDE и т. п.), если пользовательского нет.
  • Типичные правки:
  • заменить строку типа exec /etc/X11/Xsession на exec startxfce4 (для XFCE);
  • добавить проверку на существование пользовательского .xsession и его запуск. Пример фрагмента:
  if [ -r /etc/profile ]; then
      . /etc/profile
  fi

  if [ -r $HOME/.xsession ]; then
      exec $HOME/.xsession
  else
      exec startxfce4
  fi

Важные замечания

  1. Перезапуск после изменений
    После правки конфигураций перезапустите сервисы:
   # systemctl restart xrdp
   # systemctl restart xrdp-sesman
  1. Права и безопасность
  • Убедитесь, что сертификаты и ключи имеют правильные права (600).
  • Ограничьте доступ по IP/фаерволу, используйте сильные пароли/SSH‑ключи.

Итог

XRDP — удобный и популярный способ организовать удалённое графическое подключение к Linux по RDP. Подходит для администрирования, удалённой работы и обучения. Однако для задач с высокой графической нагрузкой или строгими требованиями к отзывчивости лучше рассмотреть альтернативные решения (VNC, SSH + X11‑пересылка, платные продукты).

Похожие записи

Настройка взаимодействия RED ADM и Windows Active Directory

Сегодня проведем несколько экспериментов по настройке взаимодействия RED ADM и Windows Active Directory. Есть несколько способов настройки доверия для упрощения миграции с решений Microsoft на Российское ПО и сегодня их…

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Так как на севере делать абсолютно нечего, то я продолжаю заниматься саморазвитием 🙂 На этой неделе вспоминаю и углубляю свои знания в Docker. Лучший способ запомнить тему, это вести конспект…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Топ-9 нейросетей для генерации изображений в 2026 году

Топ-9 нейросетей для генерации изображений в 2026 году

Настройка взаимодействия RED ADM и Windows Active Directory

Настройка взаимодействия RED ADM и Windows Active Directory

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Подробная инструкция по написанию YAML‑файлов для Docker Compose

Установка основного контроллера домена на базе REDADM

Установка основного контроллера домена на базе REDADM

zVirt работа с шаблонами виртуальных машин

zVirt работа с шаблонами виртуальных машин

Подробная инструкция по работе с томами (volumes) в Docker

Подробная инструкция по работе с томами (volumes) в Docker