Xrdp
Переключение клавиатуры с удаленной машины
Далее шрифты - этот бинарник ищет шрифты в /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 из пакетов:
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 настраиваем параметры сессии, использование буфера обмена и прочее(оба файла отлично комментированы и настройка не должна вызвать сложности) перезапускаем 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=true ; 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=32 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=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
ИСТОЧНИКИ: