imported>Vix |
imported>Supportadmin |
Строка 1: |
Строка 1: |
| * [http://unixforum.org/index.php?showtopic=133976 сборка...]
| | За последние пару лет, а сейчас январь 2018, в JS появилось столько всего нового и это в стольких местах описано. Пора собрать в кучу весь поток сознания. |
| | ==Объявления переменных let и const == |
| | [https://learn.javascript.ru/let-const Теория] |
| | [https://jsperf.com/let-vs-var-performance/93 Тесты] |
|
| |
|
| ==Переключение клавиатуры с удаленной машины==
| | Вывод: никакого существенного изменения производительности не несут. Вопрос в обратной совместимости кода. |
| Далее шрифты - этот бинарник ищет шрифты в /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 переключает на английский.
| |
| взято: [http://www.opennet.ru:8101/openforum/vsluhforumID15/1638.html тут]
| |
| | |
| * еще вариант [http://odtdocs.ru/informatika/14750/index.html?page=4 тут]
| |
| 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"
| |
| <hr>
| |
| | |
| ==Удалённый рабочий стол в 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. Я сейчас сижу на работе через удалённый рабочий стол ;)
| |
| | |
| * [http://hashcode.ru/questions/619/удалённый-рабочий-стол-в-ubuntu-linux статья тут]
| |
| | |
| * [http://rus-linux.net/nlib.php?name=/MyLDP/lvs/remote-graphical-desktops-on-linux.html еще руководство]
| |
| | |
| ==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 настраиваем параметры сессии, использование буфера обмена и прочее(оба файла отлично комментированы и настройка не должна вызвать сложности)
| |
| | |
| 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
| |
| | |
| * Раскладка клавиатуры
| |
| | |
| $ 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=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
| |
| | |
| * Курсор в черном квадрате при подключении по RDP
| |
| | |
| Неожиданно после обновления системы Calculate Linux обнаружилось что стрелка курсора показывается черном квадрате. Проблема решается редактированием файла:
| |
| | |
| mcedit /etc/xrdp/xrdp.ini
| |
| = часть вывода команды с необходимыми изменениями =
| |
| 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 /etc/xrpd/certificate
| |
| cd /etc/xrdp/certificate
| |
| openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
| |
| | |
| * Отредактируем файл настройки:
| |
| | |
| 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
| |
| | |
| '''* Возможные проблемы:'''<br>
| |
| Появление в каталоге пользователя файла с запретом .thinclient_drives<br>
| |
| и лог файла от 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
| |
| | |
| | |
| ИСТОЧНИКИ:
| |
| <hr>
| |
| * [https://a-katyrev.blogspot.com/2018/01/rdp-debian-9-xrdp.html Терминальный RDP сервер Debian 9 + Xrdp]
| |
| * [http://renbuar.blogspot.com/2017/08/xrdp-debian-9-gnome.html Установка xrdp debian 9 gnome]
| |
| * [https://sevo44.ru/xrdp-terminalnyj-server-linux/#Debian_9 Debian 9 - Xrdp]
| |