Xrdp: различия между версиями
(не показано 38 промежуточных версий 10 участников) | |||
Строка 1: | Строка 1: | ||
= | = Первоначальная настройка сервера XRDP на сервере = | ||
* | * Установить пакет ''xrdp''. | ||
* Включить | apt-get install xrdp | ||
systemctl enable xrdp | * Включить сервисы: | ||
systemctl start xrdp | systemctl enable xrdp xrdp-sesman | ||
systemctl start xrdp xrdp-sesman | |||
[[Категория: | Права доступа пользователя: | ||
* Для доступа к терминальному сеансу — включить в группу '''tsusers''' | |||
usermod -a -G tsusers user | |||
* Для проброса папки — включить в группу '''fuse''' | |||
==Настройки== | |||
Настройки сервера хранятся в файле '''/etc/xrdp/sesman.ini'''. | |||
(воспользуйтесь поиском в текстовом редакторе, чтобы найти параметр) | |||
*Максимальное количество подключений: '''MaxSessions''' | |||
*Разрыв сеанса при отключении пользователя: '''KillDisconnected''' | |||
*Авторизация Root: '''AllowRootLogin'''=false (true/false) | |||
*Название монтируемой папки: '''FuseMountName'''=Mount_FOLDER | |||
= Подключение = | |||
Пример: | |||
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'' — пароль терминального пользователя. | |||
{{Attention|Избегайте одновременный сеансов RDP и обычных для одного и того же пользователя. Systemd не позволит полноценно работать в сеансе RDP.}} | |||
Если пользователь или пароль не указаны, появится окно входа. | |||
Так же вы можете использовать клиент Remmina. | |||
{{Note|В случае проблем с подключением дисков необходимо в настройках подключения в локальных ресурсах отключать галочку “Принтеры»}} | |||
{{Note|При подключении через клиент Windows на странице авторизации не получится переключить раскладку клавиатуры для требуемого языка ввода. В большинстве случаев по умолчанию стоит русская раскладка, а вводить надо на английском. | |||
Перед подключением к Windows необходимо вначале перейти на раскладку, в которой вводится логин и пароль, как правило это EN.}} | |||
= Дополнительно = | |||
Для использования сервером установленной графической оболочки MATE выполните следующее: | |||
1. Установите пакет {{pkg|mate-session}}. | |||
2. Убедитесь, что по умолчанию будет запускаться mate-session: | |||
<source lang="text" highlight="1">$ runwm --print default | |||
/usr/bin/mate-session</source> | |||
= Экран входа = | |||
[[Изображение:Xrdp-login-screen.png]] | |||
= Проброс звука = | |||
Для прослушивания звука из терминального сеанса локально установите '''на терминальный сервер''' пакет {{pkg|pulseaudio-module-xrdp}}: | |||
apt-get install pulseaudio-module-xrdp | |||
При использовании в качестве клиента xfreerdp добавьте параметр {{path|/sound:sys:pulse}} | |||
xfreerdp /v:10.4.4.17 /u:user /p:123 /sound:sys:pulse | |||
=Проброс USB-устройств= | |||
Для проброса USB-устройств на сервере необходимо установить пакет xrdp-usb: | |||
# apt-get install xrdp-usb | |||
Данный компонент пробрасывает широкий спектр устройств, начиная от USB-веб-камер, до USB-токенов и смарт-карт. Инструкция по использованию: [[Xrdp-usb]] | |||
{{Attention|Проброс будет работать только в рамках локальной сети, так как требует доступность клиентского компьютера с сервера}} | |||
= Доступ доменных пользователей = | |||
В раздел домена в файле {{path|/etc/sssd/sssd.conf}} необходимо указать '''ad_gpo_map_service = +xrdp-sesman''': | |||
<source lang="ini">[domain/TEST.ALT] | |||
... | |||
ad_gpo_map_service = +xrdp-sesman | |||
...</source> | |||
Иначе будет возникать ошибка: | |||
pam_acct_mgmt failed: Permission denied | |||
== Локальные группы для доменных пользователей == | |||
Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей): | |||
В файле {{path|/etc/xrdp/sesman.ini}} | |||
TerminalServerUsers= | |||
После исправления файла запустите | |||
systemctl restart xrdp-sesman | |||
Журнал для sesman (сеансов пользователей) находится в файле {{path|/var/log/xrdp-sesman.log}}. | |||
Данная ситуация возникла потому, что в больших доменах показ всех членов группы нагружает систему, поэтому в /etc/sssd/sssd.conf по умолчанию используется значение '''enumerate = false''' | |||
Если в разделе домена в файле {{path|/etc/sssd/sssd.conf}} явно указать '''enumerate=true''': | |||
<source lang="ini">[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</source> | |||
то в {{path|/etc/xrdp/sesman.ini}} можно указать | |||
TerminalServerUsers=domain users | |||
{{Note|Доменные группы под Линуксом видны в нижнем регистре.}} | |||
Не забудьте перезапустить службы '''sssd''' и '''xrdp-sesman'''. | |||
= Производительность = | |||
Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты: | |||
{| class="wikitable" | |||
|Среда||Пакет | |||
|- | |||
|MATE||{{pkg|mate-reduced-resource}} | |||
|- | |||
|XFCE||{{pkg|xfce-reduced-resource}} | |||
|} | |||
См. также: https://askubuntu.com/questions/1283709/xrdp-and-xfce4-ubuntu-18-04-unusable#tab-top | |||
= Решение проблем = | |||
== Общий подход == | |||
Первым делом обратите внимание на логи как сервера, так и сессии: | |||
* {{path|/var/log/xrdp.log}} и {{path|/var/log/xrdp-sesman.log}} | |||
* {{path|~/.xorgxrdp.*.log}} в домашнем каталоге пользователя | |||
Например, такие строчки в последнем свидетельствуют о необходимости [http://bugzilla.altlinux.org/enter_bug.cgi?product=Sisyphus&component=xrdp запроса] пересборки {{pkg|xrdp}} с текущим {{pkg|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, если выбрать режим "Воспроизведение звука на стороне клиента"(Или аналогичный) возникает ошибка соединения. | |||
Решается запретом воспроизведения звука в настройках клиента или изменением в xrdp.ini в строке rdpsnd=true, значения true на false. При этом клиент лишается возможности воспроизводить звук, однако в остальном соединение работает. | |||
== Проблема подключения с Windows XP == | |||
Для подключения рабочих станций с Windows XP необходимо в файле {{path|/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 в {{path|/etc/xrdp/xrdp.ini}} необходимо выключить звуковую поддержку: | |||
rdpsnd=false | |||
== Проблемы одновременного запуска локального и удалённого сеанса == | |||
С версии 0.9.14-alt5 файл {{path|/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 в сеансе не показывает значки == | |||
Вариант 1. | |||
Создайте файл {{path|/etc/xdg/autostart/caja-restart.desktop}}: | |||
<source lang="ini">[Desktop Entry] | |||
Type=Application | |||
Name=Restart Caja in remote session | |||
Exec=dbus-launch caja --force-desktop</source> | |||
Вариант 2. | |||
Замените строку в файле {{path|/usr/share/applications/caja.desktop}} | |||
Exec=/usr/bin/caja | |||
на | |||
Exec=/usr/bin/caja --force-desktop | |||
Чтобы избежать сообщение об ошибке получения имени сессии, в файл {{path|/etc/xrdp/startwm.sh}} добавьте следующие строки | |||
unset DBUS_SESSION_BUS_ADDRESS | |||
exec mate-session | |||
[[Категория:Удалённый доступ]][[Категория:Терминальный сервер]] | |||
{{Category navigation|title=Терминальный сервер|category=Терминальный сервер|sortkey={{SUBPAGENAME}}}} |
Версия от 13:11, 11 февраля 2022
Первоначальная настройка сервера XRDP на сервере
- Установить пакет xrdp.
apt-get install xrdp
- Включить сервисы:
systemctl enable xrdp xrdp-sesman systemctl start xrdp xrdp-sesman
Права доступа пользователя:
- Для доступа к терминальному сеансу — включить в группу tsusers
usermod -a -G tsusers user
- Для проброса папки — включить в группу fuse
Настройки
Настройки сервера хранятся в файле /etc/xrdp/sesman.ini.
(воспользуйтесь поиском в текстовом редакторе, чтобы найти параметр)
- Максимальное количество подключений: MaxSessions
- Разрыв сеанса при отключении пользователя: KillDisconnected
- Авторизация Root: AllowRootLogin=false (true/false)
- Название монтируемой папки: FuseMountName=Mount_FOLDER
Подключение
Пример:
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 — пароль терминального пользователя.
Если пользователь или пароль не указаны, появится окно входа.
Так же вы можете использовать клиент Remmina.
Дополнительно
Для использования сервером установленной графической оболочки MATE выполните следующее:
1. Установите пакет mate-session.
2. Убедитесь, что по умолчанию будет запускаться 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:
# apt-get install xrdp-usb
Данный компонент пробрасывает широкий спектр устройств, начиная от 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
Локальные группы для доменных пользователей
Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей):
В файле /etc/xrdp/sesman.ini
TerminalServerUsers=
После исправления файла запустите
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.
Производительность
Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты:
Среда | Пакет |
MATE | mate-reduced-resource |
XFCE | xfce-reduced-resource |
См. также: https://askubuntu.com/questions/1283709/xrdp-and-xfce4-ubuntu-18-04-unusable#tab-top
Решение проблем
Общий подход
Первым делом обратите внимание на логи как сервера, так и сессии:
- /var/log/xrdp.log и /var/log/xrdp-sesman.log
- ~/.xorgxrdp.*.log в домашнем каталоге пользователя
Например, такие строчки в последнем свидетельствуют о необходимости запроса пересборки 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, если выбрать режим "Воспроизведение звука на стороне клиента"(Или аналогичный) возникает ошибка соединения.
Решается запретом воспроизведения звука в настройках клиента или изменением в 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 необходимо выключить звуковую поддержку:
rdpsnd=false
Проблемы одновременного запуска локального и удалённого сеанса
С версии 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 в сеансе не показывает значки
Вариант 1.
Создайте файл /etc/xdg/autostart/caja-restart.desktop:
[Desktop Entry]
Type=Application
Name=Restart Caja in remote session
Exec=dbus-launch caja --force-desktop
Вариант 2.
Замените строку в файле /usr/share/applications/caja.desktop
Exec=/usr/bin/caja
на
Exec=/usr/bin/caja --force-desktop
Чтобы избежать сообщение об ошибке получения имени сессии, в файл /etc/xrdp/startwm.sh добавьте следующие строки
unset DBUS_SESSION_BUS_ADDRESS exec mate-session