Xrdp: различия между версиями
imported>Vix |
imported>Vix |
||
Строка 80: | Строка 80: | ||
После установки системы (при установке ставлю только системные утилиты, LXDE, SSH сервер и по желанию сервера печати), достаточно просто поставить XRDP из пакетов: | После установки системы (при установке ставлю только системные утилиты, LXDE, SSH сервер и по желанию сервера печати), достаточно просто поставить XRDP из пакетов: | ||
* '''Внимание версия пакета не ниже: 1:0.2.8-1~bpo9+1 (для Debian 9)''' | |||
sudo apt update | sudo apt update | ||
sudo apt install -y xrdp | sudo apt install -y xrdp | ||
Строка 200: | Строка 201: | ||
'''Обязательно создать каталог: /var/log/xrdp''' | '''Обязательно создать каталог: /var/log/xrdp''' | ||
mkdir -p /var/log/xrdp | mkdir -p /var/log/xrdp | ||
chown -R xrdp:xrdp /var/log/xrdp | |||
* Раскладка клавиатуры | * Раскладка клавиатуры | ||
Строка 252: | Строка 254: | ||
; fork a new process for each incoming connection | ; fork a new process for each incoming connection | ||
fork= | '''fork=false''' | ||
; tcp port to listen | ; tcp port to listen | ||
port=3389 | port=3389 | ||
Строка 296: | Строка 298: | ||
bulk_compression=true | bulk_compression=true | ||
#hidelogwindow=true | #hidelogwindow=true | ||
max_bpp= | '''max_bpp=16''' | ||
new_cursors=false | '''new_cursors=false''' | ||
; fastpath - can be 'input', 'output', 'both', 'none' | ; fastpath - can be 'input', 'output', 'both', 'none' | ||
use_fastpath=both | use_fastpath=both | ||
Строка 369: | Строка 371: | ||
[Logging] | [Logging] | ||
LogFile=xrdp.log | '''LogFile=/var/log/xrdp/xrdp.log''' | ||
LogLevel=DEBUG | LogLevel=DEBUG | ||
EnableSyslog=true | EnableSyslog=true | ||
Строка 485: | Строка 487: | ||
mcedit /etc/xrdp/xrdp.ini | mcedit /etc/xrdp/xrdp.ini | ||
= часть вывода команды с необходимыми изменениями = | = часть вывода команды с необходимыми изменениями = | ||
max_bpp=32 | # подбираем по скорости канала 16,24,32 | ||
'''max_bpp=32''' | |||
# Было true и с Сalculate Linux при подключении курсор в квадрате | # Было true и с Сalculate Linux при подключении курсор в квадрате | ||
'''new_cursors=false''' | '''new_cursors=false''' | ||
Строка 502: | Строка 505: | ||
mkdir -p /etc/xrdp/certificate | mkdir -p /etc/xrdp/certificate | ||
cd /etc/xrdp/certificate | cd /etc/xrdp/certificate | ||
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days | openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 1365 | ||
chown -R xrdp:xrdp /etc/xrdp/certificate | |||
* Отредактируем файл настройки: | * Отредактируем файл настройки: |
Версия от 01:46, 23 ноября 2018
Переключение клавиатуры с удаленной машины
Далее шрифты - этот бинарник ищет шрифты в /opt/X11rdp/lib/X11/fonts Создал каталоги /opt/X11rdp/lib/X11, сделал симлинк fonts на папку со шрифтами уже стоящего X-сервера (у меня лежали в /usr/share/X11/fonts) После этого X11rdp может запускаться, то есть уже можно виндовым клиентом терминалов заходить в sesman-X11rdp. Однако setxkbmap не работает, видимо этот бинарник X11rdp ищет папку xkb где-то в другом месте. Поэтому, создал в /usr/local/lib/xrdp файл rus.map следующего содержания:
xkb_keymap { xkb_keycodes { include "xfree86+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+ru(winkeys)+us:2+group(ctrl_shift_toggle)" }; xkb_geometry { include "pc(pc104)" }; };
Далее прописал в начале /usr/local/lib/xrdp/startwm.sh : для lxde - /usr/bin/startlxde
xkbcomp /usr/local/lib/xrdp/rus.map $DISPLAY
Все. Теперь при входе язык русский, Ctrl+Shift переключает на английский. взято: тут
- еще вариант тут
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
setxkbmap -layout "us,ru(winkeys)" -model "pc105" -option "grp:ctrl_shift_toggle,grp_led:scroll"
Удалённый рабочий стол в Ubuntu Linux
Сначала устанавливаем xrdp, он есть в репозиториях. Потом нужно установить последнюю версию x11rdp - это нормальный RDP сервер для Linux. Вся проблема лично для меня заключалась в нахождении его исходников. :)
Компилируем x11rdp:
# apt-get install subversion gcc libice-dev pkg-config zlib1g-dev cvs autoconf libtool libssl-dev libpam0g-dev libx11-dev libxfixes-dev xfonts-base $ svn co svn://server1.xrdp.org/srv/svn/repos/main/x11rdp_xorg71 $ mkdir /usr/local/X11rdp $ cd x11rdp_xorg71 # sh buildx.sh /usr/local/X11rdp
Это займёт некоторое время. После успешной компиляции стоит сделать ссылки на xserver для xrdp:
# ln -s /usr/local/X11rdp/bin/X11rdp /usr/local/bin # ln -s /usr/share/fonts/X11 /usr/local/X11rdp/lib/X11/fonts
И, наконец, указываем настройки для xrdp, чтобы он использовал x11rd. Правим /etc/xrdp/xrdp.ini:
[globals] bitmap_cache=yes bitmap_compression=yes port=3389 crypt_level=low channel_code=1 [xrdp0] name=sesman-X11rdp lib=libxup.so username=ask password=ask ip=127.0.0.1 port=-1
Вот и всё :) На самом деле всё очень просто! Это позволяет устанавливать одновременно несколько подключений, при нормальном rdp клиенте работают все сочетания клавиш и смены раскладок происходят без проблем. Если активных клиентов нет, работает только один процесс - xrdp. Я сейчас сижу на работе через удалённый рабочий стол ;)
Debian 9 - настройка xrdp
Терминальный RDP сервер Debian 9 + Xrdp
Год назад, я описал установку терминального сервера Debian+xRDP+X11-rdp. В связи с переходом на другой гипервизор возникла необходимость его переустановки. Так как за это время вышел 9-й релиз Debian, то естественно решено ставить его. За этот год проект XRDP эволюционировал с версии 0.6.1 до версии 0.9.3 и установка сервера категорически упростилась. После установки системы (при установке ставлю только системные утилиты, LXDE, SSH сервер и по желанию сервера печати), достаточно просто поставить XRDP из пакетов:
- Внимание версия пакета не ниже: 1:0.2.8-1~bpo9+1 (для Debian 9)
sudo apt update sudo apt install -y xrdp
Вместе с пакетом xrdp поставится xorgxrdp, который собственно и является рекомендуемым командой xrdp RDP сервером, обеспечивающим удаленное подключение, а XRDP это прокси сервер, обеспечивающий одновременное подключение множества пользователей. Во время установки сгенерируется сертификат безопасности, который потом, при желании можно перегенерировать(я не стал). После установки необходимо выполнить:
dpkg-reconfigure xserver-xorg-legacy
- Выбрать - Кто угодно
Все, можно подключаться. В случае необходимости конфигурируем RDP параметры путем изменения настроек в /etc/xrdp/xrdp.ini и
/etc/xrdp/sesman.ini
в /etc/xrdp/xrdp.ini можно закомментировать ненужные варианты подключений, например так: в /etc/xrdp/sesman.ini настраиваем параметры сессии, использование буфера обмена и прочее(оба файла отлично комментированы и настройка не должна вызвать сложности)
mcedit /etc/xrdp/sesman.ini = необходимое изменение = [Security] # Авторизация root. true - разрешено false - запрещено AllowRootLogin=false
- Одна сессия для пользователя XRDP
mcedit /etc/xrdp/sesman.ini = вывод команды с необходимыми настройками = [Globals] ListenAddress=127.0.0.1 ListenPort=3350 EnableUserWindowManager=true UserWindowManager=startwm.sh DefaultWindowManager=startwm.sh [Security] AllowRootLogin=false MaxLoginRetry=4 TerminalServerUsers=tsusers TerminalServerAdmins=tsadmins ; When AlwaysGroupCheck=false access will be permitted ; if the group TerminalServerUsers is not defined. AlwaysGroupCheck=false [Sessions] ;; X11DisplayOffset - x11 display number offset ; Type: integer ; Default: 10 X11DisplayOffset=10 # ;; MaxSessions - maximum number of connections to an xrdp server ; Type: integer ; Default: 0 # Выставляем количество пользователей для одновременной работе на сервере MaxSessions=3 ;; KillDisconnected - kill disconnected sessions ; Type: boolean ; Default: false ; if 1, true, or yes, kill session after 60 seconds # Не разрываем сеанс при отключении пользователя чтобы потом попасть в туже сессию KillDisconnected=true ;; IdleTimeLimit - when to disconnect idle sessions ; Type: integer ; Default: 0 ; if not zero, the seconds without mouse or keyboard input before disconnect ; not complete yet IdleTimeLimit=0 ;; DisconnectedTimeLimit - when to kill idle sessions ; Type: integer ; Default: 0 ; if not zero, the seconds before a disconnected session is killed ; min 60 seconds DisconnectedTimeLimit=0 ;; Policy - session allocation policy ; Type: enum [ "Default" | "UBD" | "UBI" | "UBC" | "UBDI" | "UBDC" ] ; Default: Xrdp:<User,BitPerPixel> and Xvnc:<User,BitPerPixel,DisplaySize> ; "UBD" session per <User,BitPerPixel,DisplaySize> ; "UBI" session per <User,BitPerPixel,IPAddr> ; "UBC" session per <User,BitPerPixel,Connection> ; "UBDI" session per <User,BitPerPixel,DisplaySize,IPAddr> ; "UBDC" session per <User,BitPerPixel,DisplaySize,Connection> Policy=Default [Logging] LogFile=/var/log/xrdp/xrdp-sesman.log LogLevel=DEBUG EnableSyslog=1 SyslogLevel=DEBUG [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] ; drive redirection, defaults to xrdp_client if not set FuseMountName=/tmp/thinclient_drives [SessionVariables] PULSE_SCRIPT=/etc/xrdp/pulse/default.pa CHANSRV_LOG_PATH=/var/log/xrdp
Обязательно создать каталог: /var/log/xrdp
mkdir -p /var/log/xrdp chown -R xrdp:xrdp /var/log/xrdp
- Раскладка клавиатуры
$ sudo nano /etc/xrdp/xrdp_keyboard.ini
Изменить:
(-) rdp_layout_us=us (+) rdp_layout_us=us,ru
Добавить:
Пример на сайте проекта
в комментах
[rdp_keyboard_ru] keyboard_type=4 keyboard_type=7 keyboard_subtype=1 model=pc105 options=grp:alt_shift_toggle rdp_layouts=default_rdp_layouts layouts_map=layouts_map_ru [layouts_map_ru] rdp_layout_us=us,ru rdp_layout_ru=us,ru
перезапускаем XRDP
systemctl restart xrdp
Все, можно подключаться. Настоятельно рекомендую удалить хранитель экрана, чтоб не грузить процессор.
apt remove xscreensaver
Если по какой то причине xorgrdp не устраивает вот ссыдка на документацию как собрать X11-rdp.
Обратил внимание, что начинают появляться средства мониторинга и администрирования сессий и хотя они находятся в зачаточном состоянии, сама тенденция обнадеживает - вот вывод man:
xrdp-sesadmin [options] -c=command
- файл /etc/xrdp/xrdp.ini
[Globals] ; xrdp.ini file version number ini_version=1 ; fork a new process for each incoming connection fork=false ; tcp port to listen port=3389 ; 'port' above should be connected to with vsock instead of tcp use_vsock=false ; regulate if the listening socket use socket option tcp_nodelay ; no buffering will be performed in the TCP stack tcp_nodelay=true ; regulate if the listening socket use socket option keepalive ; if the network connection disappear without close messages the connection will be closed tcp_keepalive=true #tcp_send_buffer_bytes=32768 #tcp_recv_buffer_bytes=32768 ; security layer can be 'tls', 'rdp' or 'negotiate' ; for client compatible layer security_layer=rdp ; minimum security level allowed for client ; can be 'none', 'low', 'medium', 'high', 'fips' crypt_level=high ; X.509 certificate and private key ; openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 ; certificate= ; key_file= certificate=/etc/xrdp/certificate/cert.pem key_file=/etc/xrdp/certificate/key.pem ; set SSL protocols ; can be comma separated list of 'SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2' ssl_protocols=TLSv1, TLSv1.1, TLSv1.2 ; set TLS cipher suites #tls_ciphers=HIGH ; Section name to use for automatic login if the client sends username ; and password. If empty, the domain name sent by the client is used. ; If empty and no domain name is given, the first suitable section in ; this file will be used. autorun= allow_channels=true allow_multimon=true bitmap_cache=true bitmap_compression=true bulk_compression=true #hidelogwindow=true max_bpp=16 new_cursors=false ; fastpath - can be 'input', 'output', 'both', 'none' use_fastpath=both ; when true, userid/password *must* be passed on cmd line #require_credentials=true ; You can set the PAM error text in a gateway setup (MAX 256 chars) #pamerrortxt=change your password according to policy at http://url ; ; colors used by windows in RGB format ; blue=009cb5 grey=dedede #black=000000 #dark_grey=808080 #blue=08246b #dark_blue=08246b #white=ffffff #red=ff0000 #green=00ff00 #background=626c72 ; ; configure login screen ; ; Login Screen Window Title #ls_title=My Login Title ; top level window background color in RGB format ls_top_window_bg_color=009cb5 ; width and height of login screen ls_width=350 ls_height=430 ; login screen background color in RGB format ls_bg_color=dedede ; optional background image filename (bmp format). #ls_background_image= ; logo ; full path to bmp-file or file in shared folder ls_logo_filename= ls_logo_x_pos=55 ls_logo_y_pos=50 ; for positioning labels such as username, password etc ls_label_x_pos=30 ls_label_width=60 ; for positioning text and combo boxes next to above labels ls_input_x_pos=110 ls_input_width=210 ; y pos for first label and combo box ls_input_y_pos=220 ; OK button ls_btn_ok_x_pos=142 ls_btn_ok_y_pos=370 ls_btn_ok_width=85 ls_btn_ok_height=30 ; Cancel button ls_btn_cancel_x_pos=237 ls_btn_cancel_y_pos=370 ls_btn_cancel_width=85 ls_btn_cancel_height=30 [Logging] LogFile=/var/log/xrdp/xrdp.log LogLevel=DEBUG EnableSyslog=true SyslogLevel=DEBUG ; LogLevel and SysLogLevel could by any of: core, error, warning, info or debug [Channels] ; Channel names not listed here will be blocked by XRDP. ; You can block any channel by setting its value to false. ; IMPORTANT! All channels are not supported in all use ; cases even if you set all values to true. ; You can override these settings on each session type ; These settings are only used if allow_channels=true rdpdr=true rdpsnd=true drdynvc=true cliprdr=true rail=true xrdpvr=true tcutils=true ; for debugging xrdp, in section xrdp1, change port=-1 to this: #port=/tmp/.xrdp/xrdp_display_10 ; for debugging xrdp, add following line to section xrdp1 #chansrvport=/tmp/.xrdp/xrdp_chansrv_socket_7210 ; ; Session types ; ; Some session types such as Xorg, X11rdp and Xvnc start a display server. ; Startup command-line parameters for the display server are configured ; in sesman.ini. See and configure also sesman.ini. [Xorg] name=Xorg lib=libxup.so username=ask password=ask ip=127.0.0.1 port=-1 code=20 [X11rdp] name=X11rdp lib=libxup.so username=ask password=ask ip=127.0.0.1 port=-1 xserverbpp=24 code=10 [Xvnc] name=Xvnc lib=libvnc.so username=ask password=ask ip=127.0.0.1 port=-1 #xserverbpp=24 #delay_ms=2000 [console] name=console lib=libvnc.so ip=127.0.0.1 port=5900 username=na password=ask #delay_ms=2000 [vnc-any] name=vnc-any lib=libvnc.so ip=ask port=ask5900 username=na password=ask #pamusername=asksame #pampassword=asksame #pamsessionmng=127.0.0.1 #delay_ms=2000 [sesman-any] name=sesman-any lib=libvnc.so ip=ask port=-1 username=ask password=ask #delay_ms=2000 [neutrinordp-any] name=neutrinordp-any lib=libxrdpneutrinordp.so ip=ask port=ask3389 username=ask password=ask ; You can override the common channel settings for each session type #channel.rdpdr=true #channel.rdpsnd=true #channel.drdynvc=true #channel.cliprdr=true #channel.rail=true #channel.xrdpvr=true
- Курсор в черном квадрате при подключении по RDP
Неожиданно после обновления системы Calculate Linux обнаружилось что стрелка курсора показывается черном квадрате. Проблема решается редактированием файла:
mcedit /etc/xrdp/xrdp.ini = часть вывода команды с необходимыми изменениями = # подбираем по скорости канала 16,24,32 max_bpp=32 # Было true и с Сalculate Linux при подключении курсор в квадрате new_cursors=false
- Сертификат при работе сервера XRDP
По умолчанию сертификат работает с сертификатами созданными при установке о чем свидетельствует информация в логе xrdp:
cat /var/log/xrdp.log = необходимая информация = Using default X.509 certificate: /etc/xrdp/cert.pem Using default X.509 key file: /etc/xrdp/key.pem
- Выпустим свой сертификат на 1 год по команде указанном в файле настройки xrdp. Создадим папку, перейдем туда и запустим команду генерации ключа:
mkdir -p /etc/xrdp/certificate cd /etc/xrdp/certificate openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 1365 chown -R xrdp:xrdp /etc/xrdp/certificate
- Отредактируем файл настройки:
mcedit /etc/xrdp/xrdp.ini = необходимые изменения = ; security layer can be 'tls', 'rdp' or 'negotiate' ; for client compatible layer security_layer=negotiate ; minimum security level allowed for client ; can be 'none', 'low', 'medium', 'high', 'fips' crypt_level=high ; X.509 certificate and private key ; openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 certificate=/etc/xrdp/certificate/cert.pem key_file=/etc/xrdp/certificate/key.pem ; specify whether SSLv3 should be disabled #disableSSLv3=true ; set TLS cipher suites #tls_ciphers=HIGH
* Возможные проблемы:
Появление в каталоге пользователя файла с запретом .thinclient_drives
и лог файла от xrdp.
* Решение: внести в файл /etc/xrdp/xrdp.ini
[Logging] LogFile=/var/log/xrdp/xrdp-sesman.log .. [Chansrv] ; drive redirection, defaults to xrdp_client if not set ;FuseMountName=thinclient_drives FuseMountName=/tmp/thinclient_drives .. [SessionVariables] PULSE_SCRIPT=/etc/xrdp/pulse/default.pa CHANSRV_LOG_PATH=/var/log/xrdp
и дополнительно создать каталог:
mkdir -p /var/log/xrdp
перезапускаем службу xrdp.
/etc/init.d/xrdp restart
ИСТОЧНИКИ: