Skip to main content

Настройка xrdp-сервера

Установка и настройка сервера

Перед установкой и настройкой сервера необходимо предварительно перейти в сеанс пользователя root:

su -

Дальнейшие указанные действия должны выполняться с правами пользователя root или администратора системы, если не указано иное. 

1. Установите сервер xrdp командой:

dnf install xrdp xorgxrdp pulseaudio-module-xrdp

2. Создайте пользователя test и установите ему пароль:

useradd -m test
passwd test

3. Создайте группу tsusers и добавьте пользователя в эту группу:

groupadd tsusers
usermod -aG tsusers test

4. Настройте предпочитаемую графическую оболочку по умолчанию:

для mate выполните:

sed -i '/PREFERRED=/d' /etc/sysconfig/desktop 2>/dev/null; echo 'PREFERRED="$(type -p mate-session)"' >> /etc/sysconfig/desktop

для cinnamon выполните:

sed -i '/PREFERRED=/d' /etc/sysconfig/desktop 2>/dev/null; echo 'PREFERRED="$(type -p cinnamon-session)"' >> /etc/sysconfig/desktop

5. Измените файл /etc/xrdp/sesman.ini следующим образом:

sed -i 's/param=Xorg/param=\/usr\/libexec\/Xorg/' /etc/xrdp/sesman.ini

6. Раскомментируйте тип сессии Xorg в /etc/xrdp/xrdp.ini:

[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

7. Тип сессии Xvnc закомментируйте:

#[Xvnc]
#name=Xvnc
#lib=libvnc.so
#username=ask
#password=ask
#ip=127.0.0.1
#port=-1

8. Запустите сервер xrdp и добавьте его в автозапуск:

systemctl enable xrdp --now

9. Xrdp позволяет создавать новые сессии пользователей через запуск X-сервера, но не может подключаться к уже существующей сессии. Если сессия xrdp активна, то пользователь не сможет войти в нее снова.

При получении ошибки «Could not acquire name on session bus» необходимо на сервере создать файл /etc/X11/Xsession.d/99dbus-session со следующим содержимым:

unset DBUS_SESSION_BUS_ADDRESS

image.png

Для применения внесенных изменений необходимо перезагрузить систему.

Решение проблемы с переключением языка клавиатуры при подключении из Windows

Откройте файл:

nano /etc/xrdp/xrdp_keyboard.ini

Добавьте в конец файла следующее содержимое:

[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
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

В данной конфигурации раскладка переключается сочетанием клавиш Alt+Shift.

Чтобы отключить определённый тип сессии (Xvnc или Xorg), закомментируйте в файле /etc/xrdp/xrdp.ini соответствующий раздел: [Xvnc] или [Xorg].

Для применения настроек перезагрузите сервер xrdp:

systemctl restart xrdp

Проброс локального диска и принтера при подключении из Windows

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

Подключение на клиенте

Для подключения из Windows используйте «Подключение к удаленному рабочему столу».

Для подключения из РЕД ОС используйте приложение «Remmina» («Главное меню» —  «Интернет» — «Remmina»).

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

Для подключения в открывшемся окне впишите имя пользователя и пароль.

Для применения настроек перезагрузите сервер xrdp:

systemctl restart xrdp

Устранение ошибки при настройке удаленного доступа с Windows 7/XP на РЕД ОС

При возникновении ошибки такого вида:

image.png

Откройте файл:

nano /etc/xrdp/xrdp.ini

Измените значение параметра security_layer:

security_layer=rdp

Для применения настроек перезагрузите сервер xrdp:

systemctl restart xrdp

Аутентификация под доменным пользователем

Для разрешения аутентификации доменных пользователей требуется изменить файл:

nano /etc/xrdp/sesman.ini

Закомментировав следующие строки:

#TerminalServerUsers=tsusers
#TerminalServerAdmins=tsadmins

Перезапустите сервер:

systemctl restart xrdp

Чтобы разрешить определенным доменным пользователям доступ к RDP-серверу, достаточно в группу tsusers добавить доменных пользователей.

Добавление в группу tsusers пользователя bob производится командой:

usermod -aG tsusers bob

где bob - это доменный пользователь,

В файл /etc/xrdp/sesman.ini в секцию [Security]  необходимо добавить строки:

TerminalServerUsers=tsusers
AlwaysGroupCheck=true

Еще один вариант - в качестве локальной группы указать доменную:

TerminalServerUsers=rdp

здесь rdp - группа безопасности на вашем контроллере домена, в которую могут входить необходимые вам пользователи xrdp-сервера.

После этого перезапустите сервер:

systemctl restart xrdp
systemctl restart sssd

Дополнительная настройка SELinux

После тестового подключения к xrdp-серверу нужно выполнить настройку SELinux, выполните следующие команды на сервере:

ausearch -c 'krb5_child' --raw | audit2allow -M my-krb5child
semodule -X 300 -i my-krb5child.pp

Завершение всех процессов при выходе из сеанса

Для того чтобы при выходе из системы прекращались все процессы, явно или неявно запущенные от имени авторизованного пользователя, в файле /etc/systemd/logind.conf необходимо раскомментировать параметр KillUserProcesses и установить значение yes.

image.png

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

systemctl restart systemd-logind

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

Оптимизацию использования ресурсов RDP-сервера (процессора, оперативной памяти, каналов связи) можно произвести представленными ниже изменениями конфигурации.

при использовании MATE:

Для отключения композитного менеджера путем задания значения по умолчанию параметра dconf следует создать файл

 /etc/dconf/db/local.d/10_mate_nocomp со следующим содержимым (с правами пользователя root):

nano /etc/dconf/db/local.d/10_mate_nocomp
[org/mate/marco/general]
compositing-manager=false 

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

echo "/org/mate/marco/general/compositing-manager" > /etc/dconf/db/local.d/locks/10_mate_nocomp

при использовании CINNAMON:

Для отключения композитного режима следует выполнить команду:

sed -i '/PREFERRED=/d' /etc/sysconfig/desktop 2>/dev/null; echo 'PREFERRED="$(type -p cinnamon-session-cinnamon2d)"' >> /etc/sysconfig/desktop