📖 Полезные статьи

← На главную · ← В статьи

Настройка XRDP

Практическое руководство по XRDP на Debian 10: установка, сессии, сертификаты, раскладка клавиатуры, ограничения XFCE и обслуживание сервера.

🐧 Linux и Debian #xrdp#rdp#debian 2026-10-21

Установка XRDP на Debian 10

Ниже — конспект настройки терминального сервера на Debian 10, который использовался для работы с «1С:Предприятие». Учтите: с этой версией ОС могут возникнуть сложности с последующей установкой 1С из-за задержки поддержки со стороны разработчиков. Для Debian 9 все команды аналогичны.

Полезно заранее свериться с системными требованиями «1С:Предприятия 8».

Установка выполняется одной командой:

apt install xrdp xorgxrdp

После этого сервер уже принимает RDP-подключения. Дальше стоит разобраться с правами на запуск X-сервера: по умолчанию его могут запускать все пользователи, у которых есть доступ к консоли.

Права меняются через диалог:

dpkg-reconfigure xserver-xorg-legacy

Примените изменения перезапуском службы:

service xrdp restart

Теперь можно подключаться по RDP с новыми параметрами.

Настройка XRDP

Сначала приведите к нужному виду пользователя, созданного при установке системы. Его настройки позже станут основой шаблона (skel) для всех новых учётных записей: при создании пользователя из /etc/skel автоматически копируются нужные файлы и параметры.

Буфер обмена

Двусторонний буфер начинает работать сразу, дополнительная настройка не требуется. Если возникают проблемы, чаще всего они связаны с раскладкой клавиатуры — об этом ниже.

Перезагрузка без пароля root

Чтобы обычный пользователь мог перезагрузить сервер, не вводя пароль администратора, используется PolicyKit. Параметры собраны в секциях файла политик, а нужные действия включаются установкой значения в соответствующем поле.

Откройте файл и измените значения auth_admin_keep на yes:

vim /usr/share/polkit-1/actions/org.freedesktop.login1.policy
= часть вывода команды и необходимые изменения =
= вместо auth_admin_keep указываем yes =
<action id="org.freedesktop.login1.reboot">
<description gettext-domain="systemd">Reboot the system</description>
<message gettext-domain="systemd">Authentication is required for rebooting the system.</message>
                <defaults>
                        <allow_any>yes</allow_any>
                        <allow_inactive>yes</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
<annotate key="org.freedesktop.policykit.imply">org.freedesktop.login1.set-wall-message</annotate>
</action>

После этого пароль root при перезагрузке запрашиваться не будет.

Одна сессия на пользователя

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

vim /etc/xrdp/sesman.ini
= вывод части команды с необходимыми настройками =
[Sessions]
;; X11DisplayOffset - x11 display number offset
; Type: integer
; Default: 10
X11DisplayOffset=10

;; MaxSessions - maximum number of connections to an xrdp server
; Type: integer
; Default: 0
# Выставляем количество пользователей для одновременной работе на сервере 
MaxSessions=3

;; KillDisconnected - kill disconnected sessions
; Type: boolean
; Default: false
; if 1, true, or yes, kill session after 60 seconds
# Не разрываем сеанс при отключении пользователя чтобы потом попасть в туже сессию 
KillDisconnected=false

Запрет входа под root

По умолчанию root может подключаться по RDP. Разумнее это отключить:

vim /etc/xrdp/sesman.ini
= необходимое изменение =
[Security]
# Авторизация root. true - разрешено false - запрещено
AllowRootLogin=false

Имя локальной папки

При подключении клиент может пробросить локальную папку. Её имя задаётся здесь:

vim /etc/xrdp/sesman.ini
= необходимое изменение =
[Chansrv]
; drive redirection, defaults to xrdp_client if not set
# Название монтируемой папки
FuseMountName=Mount_FOLDER

Сертификат XRDP

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

cat /var/log/xrdp.log
= необходимая информация =
[INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[ERROR] Cannot read private key file /etc/xrdp/key.pem: Permission denied

Ошибка доступа к ключу не мешает подключению, но её лучше убрать. Достаточно добавить пользователя xrdp в группу ssl-cert:

adduser xrdp ssl-cert

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

Собственный сертификат

Можно выпустить свой сертификат той же командой, что указана в конфигурации, увеличив срок действия до 10 лет. Создайте каталог и выполните генерацию:

mkdir /etc/xrdp/certificate/
cd /etc/xrdp/certificate/
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 3650
= будут заданы вопросы на которые ответьте по аналогии =
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Kostroma
Locality Name (eg, city) []:Kostroma
Organization Name (eg, company) [Internet Widgits Pty Ltd]:example
Organizational Unit Name (eg, section) []:example
Common Name (e.g. server FQDN or YOUR name) []:Administrator
Email Address []:admin@example.com

Укажите пути к новым файлам в конфигурации:

vim /etc/xrdp/xrdp.ini
= часть кода с необходимые изменениями =
; security layer can be 'tls', 'rdp' or 'negotiate'
; for client compatible layer
security_layer=negotiate
; minimum security level allowed for client
; can be 'none', 'low', 'medium', 'high', 'fips'
crypt_level=high
; X.509 certificate and private key
; openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
certificate=/etc/xrdp/certificate/cert.pem 
key_file=/etc/xrdp/certificate/key.pem
; set SSL protocols
; can be comma separated list of 'SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3'
ssl_protocols=TLSv1.2, TLSv1.3
; set TLS cipher suites
#tls_ciphers=HIGH

Выдайте права на каталог с сертификатом:

chown -R xrdp:xrdp /etc/xrdp/certificate/

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

Внешний вид окна авторизации

Параметры формы входа меняются в том же xrdp.ini:

vim /etc/xrdp/xrdp.ini
= часть кода с необходимыми изменениями =

; Login Screen Window Title
ls_title=XRDP server 1C

; top level window background color in RGB format
# Фон
ls_top_window_bg_color=000000

; width and height of login screen
ls_width=350
ls_height=430

; login screen background color in RGB format
ls_bg_color=dedede

; optional background image filename (bmp format).
#ls_background_image=

; logo
; full path to bmp-file or file in shared folder
# Свой логотип в формате bmp размера 240х140
ls_logo_filename=/etc/xrdp/logo_xrdp.bmp
ls_logo_x_pos=55
ls_logo_y_pos=50

; for positioning labels such as username, password etc
ls_label_x_pos=30
ls_label_width=60

; for positioning text and combo boxes next to above labels
ls_input_x_pos=110
ls_input_width=210

; y pos for first label and combo box
ls_input_y_pos=220

; OK button
ls_btn_ok_x_pos=142
ls_btn_ok_y_pos=370
ls_btn_ok_width=85
ls_btn_ok_height=30

; Cancel button
ls_btn_cancel_x_pos=237
ls_btn_cancel_y_pos=370
ls_btn_cancel_width=85
ls_btn_cancel_height=30

= Оставляю сессию только Xorg а остальные коментирую =

;
; Session types
;

; Some session types such as Xorg, X11rdp and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

Чтобы применить настройки, перезапустите службу:

service xrdp restart

Отключение хранителя экрана

Сначала планировал отключать заставку у каждого пользователя, но проще удалить пакет:

apt-get remove xscreensaver

В Debian 10 после базовой установки xscreensaver обычно и так отсутствует. Чтобы к серверу всегда можно было подключиться, проверьте параметры менеджера питания.

Подготовка базового пользователя

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

Раскладка клавиатуры в XFCE

С раскладкой пришлось повозиться больше всего. Помогает добавление на панель элемента «Раскладка клавиатуры» и его настройка.

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

Решение — добавить на панель элемент «Запуск приложения», выбрать «Терминал Xfce» и указать команду:

setxkbmap -layout "us,ru" -model "pc105" -option "grp:alt_shift_toggle,grp_led:scroll"

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

Правка конфигурации раскладки

Дополнительно нужные параметры прописываются в /etc/xrdp/xrdp_keyboard.ini — после этого переключение работает стабильно:

vim /etc/xrdp/xrdp_keyboard.ini
= необходимые проверки и дополнения =
В моем случае эти коды были, но лучше проверить их наличие
[default_rdp_layouts]
rdp_layout_us=0x00000409
rdp_layout_ru=0x00000419

Всё что ниже добавляем в конце не забывая что переключение происходит сочетанием  клавиш alt+shift
[layouts_map_ru]
rdp_layout_us=ru,us
rdp_layout_ru=ru,us

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
; model=pc105 при необходимости
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

Проверьте результат после перезапуска:

service xrdp restart

Ограничение настроек XFCE

Раз пользователи могут перезагружать сервер без пароля, стоит запретить им менять системные настройки. Базовые конфигурации лежат в /etc/xdg/xfce4/xfconf и по умолчанию перекрываются пользовательскими; если добавить в них нужные параметры, приоритет будет у системных.

Сначала настройте панель так, как нужно, и скопируйте её конфигурацию:

cp -v /home/настроенный пользователь/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/
= вывод команды =
«/home/настроенный пользователь/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml» -> «/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml»

Затем внесите в файл запрет на изменения для всех, кроме пользователя local:

mcedit /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
= вывод команды с необходимыми изменениями =
<channel name="xfce4-panel" version="1.0" locked="*" unlocked="local">

После сохранения остальные пользователи увидят предупреждение при попытке изменить панель.

Аналогично запрещаются изменения настроек XFCE:

mcedit /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
= вывод команды с необходимыми изменениями =
<channel name="xsettings" version="1.0" locked="*" unlocked="local">

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

Остаётся выключение: значки видны, и действие можно выполнить, введя пароль root. Чтобы сделать кнопки неактивными, создайте файл kiosk:

mkdir /etc/xdg/xfce4/kiosk
mcedit /etc/xdg/xfce4/kiosk/kioskrc
= вывод команды с необходимыми изменениями =
[xfce4-session]
# Указываем пользователей кто может перегрузить сервер или разрешение группе %root
Shutdown=root,example

Обычно на панель выводится элемент «Системные действия» только с пунктами «Перезагрузка» и «Завершение сеанса». В итоге выходить из сеанса могут все, а перезагружать сервер — только разрешённые пользователи.

Примените изменения перезагрузкой:

reboot

Шаблон для новых пользователей

Когда все настройки проверены, создайте шаблон, который будет копироваться новым пользователям. В примере переносятся настройки XFCE, рабочего стола и списка баз 1С:

cd /home/Базовый пользователь
 cp -R -f -b .config/ /etc/skel/
 cp -R -f -b Рабочий\ стол/ /etc/skel/
# В случае использования 1С:Предприятие
 cp -R -f -b .1C/ /etc/skel/

Последняя строка копирует настройки окна «Запуск 1С:Предприятие» со списком баз. Новые пользователи после входа получат те же настройки и содержимое рабочего стола, что и базовый.

Эту же схему можно использовать для переноса настроек между пользователями. Если учётных записей много, процесс несложно автоматизировать небольшим скриптом.

Учётные записи Debian

Для доступа используются локальные пользователи. Можно настроить и доменную авторизацию, но тогда придётся решать вопросы с VPN для удалённых сотрудников — в этом сценарии такие сложности не требовались.

Добавление пользователя

adduser user007

Команда запросит пароль и дополнительную информацию. В результате будет создан пользователь, его группа и домашний каталог, куда скопируются файлы из /etc/skel.

Смена пароля

passwd user

Утилита дважды запросит новый пароль и подтвердит успешное изменение.

Удаление пользователя

Чтобы удалить вместе с домашним каталогом:

deluser --remove-home user007

Список пользователей

Все учётные записи и их параметры видны в файле:

cat /etc/passwd
= часть вывода команды =
test:x:1001:1001:test,,,:/home/test:/bin/bash
example:x:1002:1002:example,,,:/home/example:/bin/bash
usr1cv8:x:999:1003:1C Enterprise 8 server launcher:/home/usr1cv8:/bin/sh
geoclue:x:119:127::/var/lib/geoclue:/bin/false
davfs2:x:120:128::/var/cache/davfs2:/bin/false

При необходимости параметры можно отредактировать вручную.

Локальный диск клиента

Проброс локального диска проверялся на стандартном клиенте Windows, а также на Remmina и KRDC в Linux — монтирование и работа проходят без проблем.

Если диск не подключается, попробуйте в настройках RDP-клиента снять галочку «Принтеры» в разделе локальных ресурсов.

Подключение из Windows

В окне авторизации XRDP нельзя переключить раскладку на нужный язык. Обычно по умолчанию активна русская раскладка, а логин и пароль требуется вводить латиницей.

Перед подключением переключите раскладку на английскую — тогда ввод пройдёт корректно.

Принтеры

С принтерами всегда больше всего хлопот, и хорошо, что большинство современных моделей сетевые: настроить такой принтер сможет даже начинающий администратор. С USB-устройствами в Linux придётся повозиться. Проброс локального принтера через RDP-клиент у меня ни разу не заработал нормально, да и, по отзывам, работает он нестабильно — особенно если офисы разные или пользователь подключается из дома.

Для удалённых сотрудников есть два практичных варианта:

  1. Если печать не обязательна, в 1С настраивается сохранение в PDF, а готовая папка пробрасывается на терминальный сервер любым популярным RDP-клиентом.
  2. Если принтер нужен, настраивается VPN, чтобы удалённый клиент оказался в той же сети.

Обслуживание XRDP

Служба управляется стандартными командами Debian:

service xrdp restart
service xrdp start
service xrdp stop
service xrdp status

Пример статуса после запуска:

service xrdp status
● xrdp.service - xrdp daemon
 Loaded: loaded (/lib/systemd/system/xrdp.service; enabled)
 Active: active (running) since Вт 2017-05-23 15:05:32 MSK; 32s ago
 Docs: man:xrdp(8)
 man:xrdp.ini(5)
 Process: 759 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
 Process: 730 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
 Main PID: 949 (xrdp)
 CGroup: /system.slice/хrdp.service
 └─949 /usr/sbin/хrdp

 май 23 15:05:31 хrdp systemd[1]: PID file /run/xrdp/xrdp.pid not readable (yet?) after start.
 май 23 15:05:32 хrdp systemd[1]: Started xrdp daemon.
 май 23 15:05:33 хrdp xrdp[949]: (949)(140156439295744)[INFO ] starting хrdp with pid 949
 май 23 15:05:45 хrdp xrdp[949]: (949)(140156439295744)[INFO ] listening to port 3389 on 0.0.0.0

Активные сессии

У каждого подключённого пользователя создаётся отдельная сессия. Найти её можно так:

ps aux | grep xrdp | grep xorg
= вывод команды =
local      694  3.7  1.9 571540 76992 ?        Sl   22:47   0:29 /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log

Здесь видно, что подключён один пользователь local с PID 694.

Завершать только этот процесс недостаточно. Полный список процессов XRDP:

ps aux | grep xrdp
= вывод команды =
root       447  0.0  0.0  13860  3640 ?        S    22:45   0:00 /usr/sbin/xrdp-sesman
xrdp       471  0.0  0.0  12248  2044 ?        S    22:45   0:00 /usr/sbin/xrdp
root       692  0.0  0.0  13616  2300 ?        S    22:47   0:00 /usr/sbin/xrdp-sesman
local      694  3.8  1.9 571540 76992 ?        Sl   22:47   0:36 /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
local      697  0.0  0.0  99512  3412 ?        Sl   22:47   0:00 /usr/sbin/xrdp-chansrv
xrdp       903  4.1  0.6  40076 28176 ?        S    22:47   0:37 /usr/sbin/xrdp
root       982  0.0  0.0   6224   828 pts/0    S+   23:02   0:00 grep xrdp

Завершить все процессы пользователя можно командой:

pkill -9 -u local

Ротация журналов

По умолчанию журналы XRDP не ротируются. Можно завести отдельный файл ротации, но проще добавить нужные пути в стандартный конфиг:

mcedit /etc/logrotate.d/rsyslog
=вывод команды с необходимыми дополнениями =
/var/log/syslog
{
 rotate 7
 daily
 missingok
 notifempty
 delaycompress
 compress
 postrotate
 invoke-rc.d rsyslog rotate > /dev/null
 endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
/var/log/хrdp-sesman.log
/var/log/хrdp.log
{
 rotate 4
 weekly
 missingok
 notifempty
 compress
 delaycompress
 sharedscripts
 postrotate
 invoke-rc.d rsyslog rotate > /dev/null
 endscript
}

Итог

Все запланированные параметры настроены. Остальное покажет эксплуатация: любая система требует внимания администратора. Возникшие проблемы и решения будут добавляться в статью — а развитие проекта с каждой новой версией заметно.


Статья взята с ресурса sevo44.ru