Инструменты пользователя

Инструменты сайта


xrdp:xrdp

xrdp

Реализация сервера rdp с открытым исходным кодом в Linux.

http://www.xrdp.org/

https://github.com/neutrinolabs/xrdp

Настройка PulseAudio в xrdp

Клиенты:


Проект для автоматизированной сборки xrdp сервера: X11RDP-o-Matic.

Установка

apt install -t jessie-backports xrdp xorgxrdp

или

apt install -t stretch-backports xrdp xorgxrdp

Логотип

Формат графических файлов:

  • BMP
  • глубина цвета 24 бита
  • тип: windows

Важно, чтобы файл логотипа имел чётное число точек по вертикали и горизонтали.

Пример настроек описан здесь

logo.bmp

Пример настроек дан в разделе xrdp.ini

sesman.ini

:!: В xrdp 0.9.1-9~bpo8+1_amd64 не работает конституция MaxSessions=0 поэтому нужно ставить завышенное число сессией.

Пример sesman.ini

Пример sesman.ini

/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=

xrdp.ini

Пример xrdp.ini

Пример xrdp.ini

/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

Пример xrdp_keyboard.ini

Пример 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

Список сессий

FIXME

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

xrdp-sesadmin -u=ИМЯ -p=ПАРОЛЬ -c=list

Список текущих сессий:

xrdp-status.sh
#!/bin/bash
ls -l /var/run/xrdp/sockdir
service xrdp status

Перезапуск

Сброс сессий путём перезапуска xrdp

Этот пример используется в решении 1С:Предприятие 8 на Debian — клиент.

/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

Debian: Работа с PAM

/etc/pam.d/xrdp-sesman
#%PAM-1.0
@include common-auth
@include common-account
@include common-session
@include common-password

Клавиатура

Параметры задаются в файле xrdp_keyboard.ini

Настройки клавиатуры необходимо выполнять при создании сессии пользователя, вот пример для IceWM.

reconnectwm.sh

Скрипт выполняется при повторном подключении пользователя к существующей сессии.

Ниже приведён пример использования этого скрипта для применения настроек клавиатуры при работе в IceWM. Этот пример используется в решении 1С:Предприятие 8 на Debian — клиент.

/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

Ссылки

xrdp/xrdp.txt · Последние изменения: 2019-05-11 00:31 — GreyWolf