Реализация сервера rdp с открытым исходным кодом в Linux.
https://github.com/neutrinolabs/xrdp
Клиенты:
Проект для автоматизированной сборки xrdp сервера: X11RDP-o-Matic.
apt install -t jessie-backports xrdp xorgxrdp
или
apt install -t stretch-backports xrdp xorgxrdp
Формат графических файлов:
Важно, чтобы файл логотипа имел чётное число точек по вертикали и горизонтали.
Пример настроек описан здесь
Пример настроек дан в разделе xrdp.ini
В xrdp 0.9.1-9~bpo8+1_amd64 не работает конституция
MaxSessions=0
поэтому нужно ставить завышенное число сессией.
Для того, чтобы пользователь с любого IP–адреса подключался к своей сессии нужно в разделе [Sessions]
задать Policy=Default
Важно убрать или отключить не используемые настройки и оставить только нужные, например секцию для настройки Xorg
и например Дистанционный помощник (x11vnc-assistant).
Список сессий пользователя:
xrdp-sesadmin -u=ИМЯ -p=ПАРОЛЬ -c=list
Список текущих сессий:
#!/bin/bash ls -l /var/run/xrdp/sockdir service xrdp status
Сброс сессий путём перезапуска xrdp
#!/bin/bash /usr/bin/pkill -f xrdp-sesman --signal 9 /usr/sbin/service xrdp restart
Решение для Debian 9 (stretch)
#!/bin/bash /usr/bin/pkill -f xrdp-sesman --signal 9 /usr/bin/pkill -f Xorg --signal 9 /usr/sbin/service xrdp restart rm -r /tmp/.X11-unix/* rm /tmp/.X*-lock
#%PAM-1.0 @include common-auth @include common-account @include common-session @include common-password
Параметры задаются в файле xrdp_keyboard.ini
Настройки клавиатуры необходимо выполнять при создании сессии пользователя, вот пример для IceWM.
Скрипт выполняется при повторном подключении пользователя к существующей сессии.
Ниже приведён пример использования этого скрипта для применения настроек клавиатуры при работе в IceWM.
#!/bin/bash pkill xxkb ( sleep 2s; setxkbmap -layout "ru,us" -model "pc105" -option "grp:caps_toggle,grp_led:scroll"; xxkb )& exit
На файл нужно дать права запуска для всех пользователей:
chmod +x /etc/xrdp/reconnectwm.sh
/kbd:0x00000409
Пример, включающий порядок раскладок клавиатуры с учётом использования XXKB:
Если первой (по умолчанию) является английская раскладка, то в xrdp_keyboard.ini указываем это:
[default_rdp_layouts] rdp_layout_none=0x00000000 rdp_layout_us=0x00000409 rdp_layout_us_pd=0xa0000409 rdp_layout_ru=0x00000419 [default_layouts_map] rdp_layout_none=us,ru rdp_layout_us=us,ru rdp_layout_us_pd=us,ru rdp_layout_ru=us,ru [rdp_keyboard_ru] keyboard_type=4 keyboard_subtype=1 options=grp:ctrl_shift_toggle rdp_layouts=default_rdp_layouts layouts_map=default_layouts_map
А если первой (по умолчанию) русская, то изменения xrdp_keyboard.ini
для такого порядка раскладок клавиатуры выглядят так:
[default_layouts_map] rdp_layout_none=ru,us rdp_layout_us=ru,us rdp_layout_us_pd=ru,us rdp_layout_ru=ru,us
В пакете xrdp_0.9.1-4~bpo8+1_amd64.deb
есть ошибки которые приводят к появлению ошибки:
Dependency failed for xrdp daemon.
Это вызвано тем, не создаётся папка /var/run/xrdp
Решение:
1. В секцию Service
файла xrdp-sesman.service
нужно добавить стоку:
[Service] ExecStartPre=/bin/sh /usr/share/xrdp/socksetup
2. Создать ссылки
ln -s /lib/systemd/system/xrdp.service /etc/systemd/system ln -s /lib/systemd/system/xrdp-sesman.service /etc/systemd/system
3. Перечитать настройки
systemctl daemon-reload
Замечена на Debian 9
Решение: нужно
service xrdp stop
dpkg-reconfigure xserver-xorg-legacy
и выбрать кому можно запускать его (кто угодно)
service xrdp start
Проблемы в PAM.
В Debian 10 обязательно закомментировать строку:
auth required pam_unix.so use_first_pass