- xrdp
- Настройки
- Подключение
- Дополнительно (MATE)
- Проброс звука
- Проброс USB-устройств
- Доступ доменных пользователей
- Локальные группы для доменных пользователей
- Повышение привилегий
- Производительность
- Решение проблем
- Общий подход
- Проблемы соединения с мобильным rdp-клиентом
- Проблема подключения с Windows XP
- Проблемы соединения с тонким клиентом Dell Wyse 3040
- Проблемы одновременного запуска локального и удалённого сеанса
- Процесс gvfsd-trash занимает 100% процессора
- Рабочий стол Mate в сеансе не показывает значки
- Если пользователь ранее не регистрировал локальный сеанс, то при подключении новым пользователем xrdp не создаёт окружение пользователя в /home
- XRDP. Установка и настройка
- Установка XRDP
- Настройка XRDP
- Добавление возможности переключать раскладку
- Технические моменты
xrdp
- Для доступа к терминальному сеансу — включить в группу tsusers:
Настройки
Настройки сервера хранятся в файле /etc/xrdp/sesman.ini . Некоторые настройки сервера установленные по умолчанию:
- AllowRootLogin=true — авторизация Root;
- MaxLoginRetry=4 — максимальное количество попыток подключения;
- TerminalServerUsers=tsusers — группа, в которую необходимо добавить пользователей для организации доступа к серверу;
- MaxSessions=50 — максимальное количество подключений к серверу;
- KillDisconnected=false — разрыв сеанса при отключении пользователя;
- FuseMountName=Mount_FOLDER — название монтируемой папки.
По умолчанию для подключения по RDP используется порт 3389. Номер порта можно изменить в файле /etc/xrdp/xrdp.ini .
Подключение
Для подключения можно использовать FreeRDP — клиент для подключения к удаленному рабочему столу по протоколу RDP.
Установить пакет xfreerdp :
xfreerdp [файл] [параметры] [/v:[:порт]]
Описание некоторых параметров:
- /v:[:порт] — IP-адрес или имя сервера;
- /u: — имя пользователя;
- /p: — пароль пользователя;
- /w: — ширина окна;
- /h: — высота окна;
- /f — полноэкранный режим;
- /size:x — размер окна;
- /drive:, — подключение каталога.
$ xfreerdp /drive:Epson,/home/cas/epson /v:10.4.129.129 /u:user /p:123
- Epson — название папки, которая будет показываться в каталоге thinclient_drives в домашней папке терминального пользователя, у локального пользователя пробрасывается папка /home/cas/epson;
- 10.4.129.129 — адрес терминального сервера;
- user — имя терминального пользователя;
- 123 — пароль терминального пользователя.
Если пользователь или пароль не указаны, появится окно входа:
Внимание! Избегайте одновременный сеансов RDP и обычных для одного и того же пользователя. Systemd не позволит полноценно работать в сеансе RDP.
Также для подключения можно использовать клиент Remmina, Connector или Krdc.
Примечание: В случае проблем с подключением дисков необходимо в настройках подключения в локальных ресурсах отключать галочку «Принтеры».
Примечание: Существует известная проблема с тем, что на странице авторизации не реализовано переключение раскладки клавиатуры. Поэтому при подключении с клиента Linux в настройках клиента следует установить раскладку «00000409 — United States — English«. Клиент Windows не содержит настройку раскладки клавиатуры. Перед подключением с помощью клиента Windows необходимо вначале перейти на раскладку, в которой вводится логин и пароль, как правило это EN.
Дополнительно (MATE)
Для использования сервером установленной графической оболочки MATE выполните следующее:
- Установите пакет mate-session .
# apt-get install mate-session
$ runwm --print default /usr/bin/mate-session
Проброс звука
Для прослушивания звука из терминального сеанса локально установите на терминальный сервер пакет pulseaudio-module-xrdp :
# apt-get install pulseaudio-module-xrdp
При использовании в качестве клиента xfreerdp добавьте параметр /sound:sys:pulse:
xfreerdp /v:10.4.4.17 /u:user /p:123 /sound:sys:pulse
Проброс USB-устройств
Для проброса USB-устройств на сервере необходимо установить пакет xrdp-usb-session :
# apt-get install xrdp-usb-session
Данный компонент пробрасывает широкий спектр устройств, начиная от USB-веб-камер, до USB-токенов и смарт-карт. Инструкция по использованию: Xrdp-usb
Внимание! Проброс будет работать только в рамках локальной сети, так как требует доступность клиентского компьютера с сервера
Доступ доменных пользователей
В раздел домена в файле /etc/sssd/sssd.conf необходимо указать ad_gpo_map_service = +xrdp-sesman:
[domain/TEST.ALT] . ad_gpo_map_service = +xrdp-sesman .
Иначе будет возникать ошибка:
pam_acct_mgmt failed: Permission denied
Локальные группы для доменных пользователей
Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей):
После исправления файла запустите
# systemctl restart xrdp-sesman
Журнал для sesman (сеансов пользователей) находится в файле /var/log/xrdp-sesman.log .
Данная ситуация возникла потому, что в больших доменах показ всех членов группы нагружает систему, поэтому в /etc/sssd/sssd.conf по умолчанию используется значение enumerate = false.
Если в разделе домена в файле /etc/sssd/sssd.conf явно указать enumerate=true:
[domain/TEST.ALT] id_provider = ad auth_provider = ad chpass_provider = ad default_shell = /bin/bash fallback_homedir = /home/%d/%u debug_level = 0 enumerate = true
то в /etc/xrdp/sesman.ini можно указать
TerminalServerUsers=domain users
Не забудьте перезапустить службы sssd и xrdp-sesman.
Повышение привилегий
- consolehelper, beesu — ограничений нет;
- polkit — требует создание дополнительных правил для удалённых пользователей. Подробнее описано на https://github.com/neutrinolabs/xrdp/issues/1568#issuecomment-624727037
Производительность
Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты:
Среда | Пакет |
MATE | mate-reduced-resource |
XFCE | xfce-reduced-resource |
Решение проблем
Общий подход
Первым делом обратите внимание на логи как сервера, так и сессии:
Например, такие строчки в последнем свидетельствуют о необходимости запроса пересборки xrdp с текущим xorg-server :
(EE) xorgxrdp: module ABI major version (23) doesn't match the server's version (24) (EE) Failed to load module "xorgxrdp" (module requirement mismatch, 0)
Проблемы соединения с мобильным rdp-клиентом
В некоторых мобильных rdp-клиентах, особенно предназначенных для работы на старых версиях Android, если выбрать режим «Воспроизведение звука на стороне клиента» (или аналогичный) возникает ошибка соединения.
Решается запретом воспроизведения звука в настройках клиента или изменением в /etc/xrdp/xrdp.ini в строке rdpsnd=true, значения true на false. При этом клиент лишается возможности воспроизводить звук, однако в остальном соединение работает.
Проблема подключения с Windows XP
Для подключения рабочих станций с Windows XP необходимо в файле /etc/xrdp/xrdp.ini добавить поддержку протокола TLSv1.1:
ssl_protocols=TLSv1.1, TLSv1.2, TLSv1.3
Эта поддержка была исключена из конфигурации по умолчанию в версии 0.9.8 (https://github.com/neutrinolabs/xrdp/releases/tag/v0.9.8).
Проблемы соединения с тонким клиентом Dell Wyse 3040
Для подключения тонких клиентов Dell Wyse 3040 в /etc/xrdp/xrdp.ini необходимо выключить звуковую поддержку:
Проблемы одновременного запуска локального и удалённого сеанса
С версии 0.9.14-alt5 файл /etc/pam.d/xrdp-sesman стал основан на правилах common-login. Второй сеанс systemd для одного и того же пользователя не удаётся запустить. Если это действительно надо, замените строку
session include common-login
session substack system-auth session required pam_loginuid.so session substack system-policy
Процесс gvfsd-trash занимает 100% процессора
Создайте раздел или файл подкачки. Например, по статье: Swap
Рабочий стол Mate в сеансе не показывает значки
Создайте файл /etc/xdg/autostart/caja-restart.desktop :
[Desktop Entry] Type=Application Name=Restart Caja in remote session Exec=dbus-launch caja --force-desktop
Замените строку в файле /usr/share/applications/caja.desktop
Exec=/usr/bin/caja --force-desktop
Чтобы избежать сообщение об ошибке получения имени сессии, в файл /etc/xrdp/startwm.sh добавьте следующие строки
unset DBUS_SESSION_BUS_ADDRESS exec mate-session
Если пользователь ранее не регистрировал локальный сеанс, то при подключении новым пользователем xrdp не создаёт окружение пользователя в /home
Данная ситуация характеризуется следующей ошибкой при попытке подключения новым пользователем по xrdp:
[ERROR] another Xserver might already be active on display 9 - see log [DEBUG] aborting connection.
Для решения этой проблемы необходимо добавить в конец файла /etc/pam.d/xrdp-sesman строки:
session required pam_env.so readenv=1 user_readenv=0 session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
XRDP. Установка и настройка
Для удалённого управления компьютером пользователи Windows привыкли использовать «Подключение к удалённому рабочему столу», работающее по протоколу RDP.
В ОС AlterOS возможна реализация такого подключение с Windows машины. Для этой цели служит пакет XRDP
Установка XRDP
Установка XRDP производится с помощью команды
# sudo yum install xrdp xorgxrdp
Настройка XRDP
Первым делом необходимо настроить или отключить Firewall.
Если выбрана настройка Firewall, то необходимо открыть как минимум порт 3389.
# sudo firewall-cmd --permanent --add-port=3389/tcp # sudo systemctl restart firewalld
Далее необходимо добавить рабочую среду Cinnamon при подключении пользователя:
# echo "cinnamon-session" > ~/.xsession # chmod +x ~/.xsession # sudo systemctl restart xrdp.service
Данная процедура должна быть произведена для каждого пользователя, которому необходим удалённый доступ на настраиваемый компьютер.
Добавление возможности переключать раскладку
Необходимо внести правки в конфигурационные файлы:
Комментируем блок с [Xvnc] и расскоментирует блок с [Xorg]
[Xorg] name=Xorg lib=libxup.so username=ask password=ask ip=127.0.0.1 port=-1 code=20 #[Xvnc] #name=Xvnc #lib=libvnc.so #username=ask #password=ask #ip=127.0.0.1 #port=-1 #xserverbpp=24 #delay_ms=2000
Приводим файл конфигурации /etc/xrdp/xrdp_keyboard.ini к виду:
[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 rdp_layouts=default_rdp_layouts layouts_map=layouts_map_ru [layouts_map_ru] rdp_layout_us=us,ru rdp_layout_ru=us,ru
Редактируем файл /usr/libexec/xrdp/startwm.sh как показано на рисунке:
# sudo nano /usr/libexec/xrdp/startwm.sh
/bin/setxkbmap -layout us,ru -variant ',winkeys' -option 'grp:alt_shift_toggle,grp_led:scroll'
# sudo systemctl restart xrdp.service
На этом процедура настройки XRDP закончена.
Для проброса звука необходимо установить пакет pulseaudio-module-xrdp, выполнив команду:
Технические моменты
- Для доступа в интернет пользователям, подключенным удалённо, необходимо открыть как минимум порт 80 (в случае если Firewall не отключен).
Открыть порт 80 можно с помощью команды:
firewall-cmd --permanent --add-port=80/tcp
После чего перезапустить сервис firewalld:
sudo systemctl restart firewalld
- Для удаленного запуска программ, таких как Yumex, пользователю, от имени которого происходит запуск, необходимо предоставить права на выполнение данной программы без ввода пароля администратора (root). Один из способов предоставления таких прав пользователю — создание конфигурационного файла в директории /etc/sudoers.d. Для этого потребуется выполнить следующие шаги:
sudo nano /etc/sudoers.d/user
2) Внести строку с названием вашего пользователя и приложения, которому необходимо дать доступ, например:
3) Сохранить файл и выставить права на него:
chmod 0440 /etc/sudoers.d/user
4) Проверить правильность синтаксиса файла sudoers:
Если команда вернет сообщение «parsed OK», значит, файл sudoers был создан без ошибок.