====== xrdp ====== {{:xrdp:xrdp_logo_mrgb.png?300|}} Реализация сервера [[rdp:rdp|rdp]] с открытым исходным кодом в Linux. http://www.xrdp.org/ https://github.com/neutrinolabs/xrdp [[xrdp:pulseaudio|Настройка PulseAudio в xrdp]] Клиенты: * [[freerdp:freerdp|FreeRDP]] * [[remmina:remmina|Remmina]] ---- Проект для автоматизированной сборки xrdp сервера: [[x11rdp-o-matic:x11rdp-o-matic|X11RDP-o-Matic]]. ====== Установка ====== apt install -t jessie-backports xrdp xorgxrdp или apt install -t stretch-backports xrdp xorgxrdp ====== Логотип ====== Формат графических файлов: * BMP * глубина цвета 24 бита * тип: windows Важно, чтобы файл логотипа имел чётное число точек по вертикали и горизонтали. Пример настроек описан [[#xrdp.ini|здесь]] {{:xrdp:logo.bmp|logo.bmp}} {{:xrdp:logon_dialog.png|}} Пример настроек дан в разделе ''[[#xrdp.ini]]'' ====== sesman.ini ====== :!: В xrdp 0.9.1-9~bpo8+1_amd64 не работает конституция ''MaxSessions=0'' поэтому нужно ставить завышенное число сессией. [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|]]. [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 ====== FIXME #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 Список текущих сессий: #!/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 ====== [[pam:pam|Debian: Работа с PAM]] #%PAM-1.0 @include common-auth @include common-account @include common-session @include common-password ====== Клавиатура ====== Параметры задаются в файле ''[[#xrdp_keyboard.ini]]'' Настройки клавиатуры необходимо выполнять при создании сессии пользователя, вот пример для [[icewm:icewm#startup|IceWM]]. ====== reconnectwm.sh ====== Скрипт выполняется при повторном подключении пользователя к существующей сессии. Ниже приведён пример использования этого скрипта для применения настроек клавиатуры при работе в [[icewm:icewm#startup|IceWM]]. #!/bin/bash icewm --restart& if pgrep -u $(whoami) xxkb>/dev/null; then pkill xxkb;xxkb& fi exit На файл нужно дать права запуска для всех пользователей: chmod +x /etc/xrdp/reconnectwm.sh {{anchor:russian-language}} ====== Особенности использования русского языка ====== - Чтобы избежать ошибок при вводе имени/пароля при подключении нужно по умолчанию установить английскую(латинскую) раскладка клавиатуры. Например, в [[freerdp:|]] нужно указать в строке запуска клиента параметр ''/kbd:0x00000409'' - Не нужно использовать ''setxkbmap'' в при запуске [[icewm:#startup|IceWM]] и в [[#reconnectwm.sh]] - Для [[#xrdp_keyboard.ini]] нужно использовать такой вариант такой вариант: Пример, включающий порядок раскладок клавиатуры с учётом использования [[xxkb:#russian-language|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 ---- * [[https://github.com/neutrinolabs/xrdp/wiki/Example-of-xrdp_keyboard.ini-for-russian-keyboard|Example of xrdp_keyboard.ini for russian keyboard]] * [[https://github.com/neutrinolabs/xrdp/issues/337#issuecomment-1272405503|keyboard layout set only to "us" after reconnect session instead "us,ru" · Issue #337 · neutrinolabs/xrdp]] ====== Решение проблем ====== [[https://github.com/FreeRDP/FreeRDP/issues/3863|Black box around cursor and other problems when connecting to xrdp xubuntu 1704]] Обязательно должен быть файл ''/var/log/xrdp.log'' ===== 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'' нужно добавить стоку: [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 ===== xrdp thinclient_drives reconnect ===== FIXME [[https://github.com/neutrinolabs/xrdp/issues/720|thinclient_drives is empty although drives selected in Win10 RDP client]] [[https://github.com/neutrinolabs/xrdp/issues/780|Drive redirection: fuse not umounted at logout]] ===== Не запускается сессия ===== Замечена на Debian 9 Решение: нужно * service xrdp stop * выполнить dpkg-reconfigure xserver-xorg-legacy и выбрать кому можно запускать его (кто угодно) * service xrdp start ===== Проблемы с авторизацией ===== Проблемы в [[#PAM]]. В Debian 10 обязательно закомментировать строку: auth required pam_unix.so use_first_pass ====== Ссылки ====== [[http://server1.xrdp.org/xrdp/logo/xrdp_logo_mrgb.png|Логотип]] **[[http://tovld.com/archives/2978|VLD: Debian + LXDE + XRDP (x11rdp) + 1C on DS or VPS — терминальный сервер]]** **[[http://a-katyrev.blogspot.ru/2016/10/debian-8-lxde-xrdp-x11-rdp.html|Администрирование и не только: Терминальный сервер Debian 8 LXDE + xRDP + X11-RDP]]** https://github.com/neutrinolabs/xrdp/wiki/Example-of-xrdp_keyboard.ini-for-russian-keyboard {{tag>terminal_server x-windows Remote_access}}