Это старая версия документа!
xrdp
Установка
apt install -t jessie-backports xrdp xorgxrdp
или
apt install -t stretch-backports xrdp xorgxrdp
Логотип
Формат графических файлов:
BMP
глубина цвета 24 бита
тип: windows
Важно, чтобы файл логотипа имел чётное число точек по вертикали и горизонтали.
Пример настроек описан здесь
Пример настроек дан в разделе xrdp.ini
sesman.ini
В xrdp 0.9.1-9~bpo8+1_amd64 не работает конституция MaxSessions=0
поэтому нужно ставить завышенное число сессией.
- /etc/xrdp/sesman.ini
[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh
[Security]
AllowRootLogin=false
MaxLoginRetry=1
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
AlwaysGroupCheck=false
[Sessions]
X11DisplayOffset=10
MaxSessions=100
KillDisconnected=false
IdleTimeLimit=0
DisconnectedTimeLimit=0
Policy=Default
[Logging]
LogFile=xrdp-sesman.log
LogLevel=CORE
EnableSyslog=1
SyslogLevel=CORE
[Xorg]
param=Xorg
param=-config
param=xrdp/xorg.conf
param=-noreset
param=-nolisten
param=tcp
[Xvnc]
param=Xvnc
param=-bs
param=-nolisten
param=tcp
param=-localhost
param=-dpi
param=96
[Chansrv]
FuseMountName=
Для того, чтобы пользователь с любого IP–адреса подключался к своей сессии нужно в разделе [Sessions]
задать Policy=Default
xrdp.ini
Важно убрать или отключить не используемые настройки и оставить только нужные, например секцию для настройки Xorg
и например Дистанционный помощник (x11vnc-assistant).
- /etc/xrdp.ini
[Globals]
ini_version=1
fork=no
port=3389
tcp_nodelay=true
tcp_keepalive=true
security_layer=negotiate
crypt_level=high
certificate=
key_file=
autorun=
allow_channels=true
allow_multimon=true
bitmap_cache=true
bitmap_compression=true
bulk_compression=true
max_bpp=32
new_cursors=true
use_fastpath=both
# configure login screen {
blue=009cb5
grey=dedede
black=000000
dark_grey=808080
blue=08246b
dark_blue=08246b
white=ffffff
red=ff0000
green=00ff00
background=626c72
ls_title=ИМЯ_СЕРВЕРА
ls_top_window_bg_color=3a6ea5
# Ширина и высота окна
ls_width=330
ls_height=203
# Цвет фона окна в формате RGB
ls_bg_color=dedede
# optional background image filename (bmp format).
#ls_background_image=
# Имя файла с логотипом и его позиция
ls_logo_filename=/usr/local/share/logo.bmp
ls_logo_x_pos=95
ls_logo_y_pos=30
# for positioning labels such as username, password etc Имена полей
ls_label_x_pos=30
ls_label_width=20
# for positioning text and combo boxes next to above labels
ls_input_x_pos=8
ls_input_width=80
# y pos for first label and combo box
ls_input_y_pos=120
# OK button
ls_btn_ok_x_pos=237
ls_btn_ok_y_pos=130
ls_btn_ok_width=85
ls_btn_ok_height=25
# Cancel button
ls_btn_cancel_x_pos=237
ls_btn_cancel_y_pos=167
ls_btn_cancel_width=85
ls_btn_cancel_height=25
# configure login screen }
[Logging]
LogFile=xrdp.log
LogLevel=CORE
EnableSyslog=true
SyslogLevel=CORE
[Channels]
rdpdr=true
rdpsnd=true
drdynvc=true
cliprdr=true
rail=true
xrdpvr=true
tcutils=true
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20
xserverbpp=16
xrdp_keyboard.ini
- /etc/xrdp/xrdp_keyboard.ini
#https://github.com/neutrinolabs/xrdp/wiki/Example-of-xrdp_keyboard.ini-for-russian-keyboard
[default_rdp_layouts]
rdp_layout_us=0x00000409
rdp_layout_de=0x00000407
rdp_layout_fr=0x0000040C
rdp_layout_it=0x00000410
rdp_layout_jp=0x00000411
rdp_layout_jp2=0xe0010411
rdp_layout_jp3=0xe0200411
rdp_layout_jp4=0xe0210411
rdp_layout_ru=0x00000419
rdp_layout_se=0x0000041D
rdp_layout_pt=0x00000816
rdp_layout_br=0x00000416
rdp_layout_pl=0x00000415
[rdp_keyboard_ru]
keyboard_type=4
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
#options=grp:alt_shift_toggle,grp_led:scroll
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru
[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru
Список сессий
Список сессий пользователя:
xrdp-sesadmin -u=ИМЯ -p=ПАРОЛЬ -c=list
Список текущих сессий:
- xrdp-status.sh
#!/bin/bash
ls -l /var/run/xrdp/sockdir
service xrdp status
Перезапуск
Сброс сессий путём перезапуска xrdp
- /usr/local/sbin/xrdp-restart.sh
#!/bin/bash
/usr/bin/pkill -f xrdp-sesman --signal 9
/usr/sbin/service xrdp restart
Решение для Debian 9 (stretch)
- /usr/local/sbin/xrdp-restart.sh
#!/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
Клавиатура
Параметры задаются в файле xrdp_keyboard.ini
Настройки клавиатуры необходимо выполнять при создании сессии пользователя, вот пример для IceWM.
reconnectwm.sh
Скрипт выполняется при повторном подключении пользователя к существующей сессии.
Ниже приведён пример использования этого скрипта для применения настроек клавиатуры при работе в IceWM.
- /etc/xrdp/reconnectwm.sh
#!/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
Решение проблем
Dependency failed for xrdp daemon
В пакете xrdp_0.9.1-4~bpo8+1_amd64.deb
есть ошибки которые приводят к появлению ошибки:
Dependency failed for xrdp daemon.
Это вызвано тем, не создаётся папка /var/run/xrdp
Решение:
1. В секцию Service
файла xrdp-sesman.service
нужно добавить стоку:
- /lib/systemd/system/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
Раскладка клавиатуры при подключении
Чтобы избежать ошибок при вводе имени/пароля при подключении нужно по умолчанию установить английскую(латинскую) раскладка клавиатуры.
Проблема #337
xrdp thinclient_drives reconnect
Ссылки