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

Оцените статью

Одной из задач по текущему проекту является развернуть терминальный сервер на базе РЕД ОС и в следующих заметках я попробую разные доступные варианты. Начнем пожалуй с 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‑пересылка, платные продукты).

Related Posts

Работа с файлами дисков виртуальных машин qcow2 (копирование, сжатие, конвертация и т.п.)

Так-как файлы виртуальных машин формата qcow2 это не совсем обычные файлы, а так называемые sparced-файлы (разряженные), то и подход при работе с ними несколько отличается. Если вы создали виртуальную машину…

План создания удостоверяющего центра (УЦ) PKI на базе Red OS

Так как в планах проекта числится развертывание удостоверяющего центра (УЦ) PKI на базе Red OS, то я заранее решил набросать план действий как будем это разорачивать и какие инструменты использовать.…

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

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

You Missed

Работа с файлами дисков виртуальных машин qcow2 (копирование, сжатие, конвертация и т.п.)

Работа с файлами дисков виртуальных машин qcow2 (копирование, сжатие, конвертация и т.п.)

План создания удостоверяющего центра (УЦ) PKI на базе Red OS

План создания удостоверяющего центра (УЦ) PKI на базе Red OS

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

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

Использование pg_probackup для резервного копирования баз данных Postgresql (локально)

Использование pg_probackup для резервного копирования баз данных Postgresql (локально)

Ввод рабочей станции РЕД ОС в IPA-домен

Ввод рабочей станции РЕД ОС в IPA-домен

WEB-интерфейс для удаленного администрирования Centos/РЕД ОС

WEB-интерфейс для удаленного администрирования Centos/РЕД ОС