Реализация сервера 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
поэтому нужно ставить завышенное число сессией.
Важно убрать или отключить не используемые настройки и оставить только нужные, например секцию для настройки Xorg
и например Дистанционный помощник (x11vnc-assistant).
Список сессий пользователя:
xrdp-sesadmin -u=ИМЯ -p=ПАРОЛЬ -c=list
Список текущих сессий:
#!/bin/bash ls -l /var/run/xrdp/sockdir service xrdp status
Сброс сессий путём перезапуска xrdp
Этот пример используется в решении 1С:Предприятие 8 на Debian — клиент.
#!/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. Этот пример используется в решении 1С:Предприятие 8 на Debian — клиент.
#!/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
В пакете 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
Чтобы избежать ошибок при вводе имени/пароля при подключении нужно по умолчанию установить английскую(латинскую) раскладка клавиатуры.