Xrdp: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
Строка 1: Строка 1:
= Первоначальная настройка сервера XRDP на сервере =
== Первоначальная настройка сервера XRDP на сервере ==


* Установить пакет ''xrdp''.
* Установить пакет ''xrdp''.
Строка 12: Строка 12:
* Для проброса папки — включить в группу '''fuse'''
* Для проброса папки — включить в группу '''fuse'''


==Настройки==
=== Настройки ===
Настройки сервера хранятся в файле '''/etc/xrdp/sesman.ini'''.
Настройки сервера хранятся в файле '''/etc/xrdp/sesman.ini'''.


Строка 22: Строка 22:
*Название монтируемой папки: '''FuseMountName'''=Mount_FOLDER
*Название монтируемой папки: '''FuseMountName'''=Mount_FOLDER


= Подключение =
== Подключение ==
Пример:
Пример:
  xfreerdp /drive:Epson,/home/cas/epson /v:10.4.129.129 /u:user /p:123
  xfreerdp /drive:Epson,/home/cas/epson /v:10.4.129.129 /u:user /p:123
Строка 43: Строка 43:
Перед подключением к Windows необходимо вначале перейти на раскладку, в которой вводится логин и пароль, как правило это EN.}}
Перед подключением к Windows необходимо вначале перейти на раскладку, в которой вводится логин и пароль, как правило это EN.}}


= Дополнительно =
== Дополнительно ==
Для использования сервером установленной графической оболочки MATE выполните следующее:
Для использования сервером установленной графической оболочки MATE выполните следующее:


Строка 52: Строка 52:
/usr/bin/mate-session</source>
/usr/bin/mate-session</source>


= Экран входа =
== Экран входа ==
[[Изображение:Xrdp-login-screen.png]]
[[Изображение:Xrdp-login-screen.png]]


= Проброс звука =
== Проброс звука ==


Для прослушивания звука из терминального сеанса локально установите '''на терминальный сервер''' пакет {{pkg|pulseaudio-module-xrdp}}:
Для прослушивания звука из терминального сеанса локально установите '''на терминальный сервер''' пакет {{pkg|pulseaudio-module-xrdp}}:
Строка 65: Строка 65:
  xfreerdp /v:10.4.4.17 /u:user /p:123 /sound:sys:pulse
  xfreerdp /v:10.4.4.17 /u:user /p:123 /sound:sys:pulse


=Проброс USB-устройств=
== Проброс USB-устройств ==
Для проброса USB-устройств на сервере необходимо установить пакет {{pkg|xrdp-usb}}:
Для проброса USB-устройств на сервере необходимо установить пакет {{pkg|xrdp-usb}}:
<syntaxhighlight lang="bash"># apt-get install xrdp-usb</syntaxhighlight>
<syntaxhighlight lang="bash"># apt-get install xrdp-usb</syntaxhighlight>
Строка 71: Строка 71:
{{Attention|Проброс будет работать только в рамках локальной сети, так как требует доступность клиентского компьютера с сервера}}
{{Attention|Проброс будет работать только в рамках локальной сети, так как требует доступность клиентского компьютера с сервера}}


= Доступ доменных пользователей =
== Доступ доменных пользователей ==


В раздел домена в файле {{path|/etc/sssd/sssd.conf}} необходимо указать '''ad_gpo_map_service = +xrdp-sesman''':
В раздел домена в файле {{path|/etc/sssd/sssd.conf}} необходимо указать '''ad_gpo_map_service = +xrdp-sesman''':
Строка 82: Строка 82:
  pam_acct_mgmt failed: Permission denied
  pam_acct_mgmt failed: Permission denied


== Локальные группы для доменных пользователей ==
=== Локальные группы для доменных пользователей ===


Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей):
Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей):
Строка 113: Строка 113:
Не забудьте перезапустить службы '''sssd''' и '''xrdp-sesman'''.
Не забудьте перезапустить службы '''sssd''' и '''xrdp-sesman'''.


== Повышение привилегий ==
=== Повышение привилегий ===


* consolehelper, beesu — ограничений нет;
* consolehelper, beesu — ограничений нет;
* polkit — требует создание дополнительных правил для удалённых пользователей. Подробнее описано на https://github.com/neutrinolabs/xrdp/issues/1568#issuecomment-624727037
* polkit — требует создание дополнительных правил для удалённых пользователей. Подробнее описано на https://github.com/neutrinolabs/xrdp/issues/1568#issuecomment-624727037


= Производительность =
== Производительность ==


Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты:
Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты:
Строка 131: Строка 131:
См. также: https://askubuntu.com/questions/1283709/xrdp-and-xfce4-ubuntu-18-04-unusable#tab-top
См. также: https://askubuntu.com/questions/1283709/xrdp-and-xfce4-ubuntu-18-04-unusable#tab-top


= Решение проблем =
== Решение проблем ==


== Общий подход ==
=== Общий подход ===


Первым делом обратите внимание на логи как сервера, так и сессии:
Первым делом обратите внимание на логи как сервера, так и сессии:
Строка 144: Строка 144:
  (EE) Failed to load module "xorgxrdp" (module requirement mismatch, 0)
  (EE) Failed to load module "xorgxrdp" (module requirement mismatch, 0)


== Проблемы соединения с мобильным rdp-клиентом ==
=== Проблемы соединения с мобильным rdp-клиентом ===


В некоторых мобильных rdp-клиентах, особенно предназначенных для работы на старых версиях Android, если выбрать режим "Воспроизведение звука на стороне клиента"(Или аналогичный) возникает ошибка соединения.  
В некоторых мобильных rdp-клиентах, особенно предназначенных для работы на старых версиях Android, если выбрать режим "Воспроизведение звука на стороне клиента"(Или аналогичный) возникает ошибка соединения.  
Строка 150: Строка 150:
Решается запретом воспроизведения звука в настройках клиента или изменением в xrdp.ini в строке rdpsnd=true, значения true на false. При этом клиент лишается возможности воспроизводить звук, однако в остальном соединение работает.
Решается запретом воспроизведения звука в настройках клиента или изменением в xrdp.ini в строке rdpsnd=true, значения true на false. При этом клиент лишается возможности воспроизводить звук, однако в остальном соединение работает.


== Проблема подключения с Windows XP ==
=== Проблема подключения с Windows XP ===


Для подключения рабочих станций с Windows XP необходимо в файле {{path|/etc/xrdp/xrdp.ini}} добавить поддержку протокола TLSv1.1:
Для подключения рабочих станций с Windows XP необходимо в файле {{path|/etc/xrdp/xrdp.ini}} добавить поддержку протокола TLSv1.1:
Строка 158: Строка 158:
Эта поддержка была исключена из конфигурации по умолчанию в версии 0.9.8 (https://github.com/neutrinolabs/xrdp/releases/tag/v0.9.8).
Эта поддержка была исключена из конфигурации по умолчанию в версии 0.9.8 (https://github.com/neutrinolabs/xrdp/releases/tag/v0.9.8).


== Проблемы соединения с тонким клиентом Dell Wyse 3040 ==
=== Проблемы соединения с тонким клиентом Dell Wyse 3040 ===


Для подключения тонких клиентов Dell Wyse 3040 в {{path|/etc/xrdp/xrdp.ini}} необходимо выключить звуковую поддержку:
Для подключения тонких клиентов Dell Wyse 3040 в {{path|/etc/xrdp/xrdp.ini}} необходимо выключить звуковую поддержку:
Строка 164: Строка 164:
  rdpsnd=false
  rdpsnd=false


== Проблемы одновременного запуска локального и удалённого сеанса ==
=== Проблемы одновременного запуска локального и удалённого сеанса ===


С версии 0.9.14-alt5 файл {{path|/etc/pam.d/xrdp-sesman}} стал основан на правилах common-login. Второй сеанс systemd для одного и того же пользователя не удаётся запустить. Если это действительно надо, замените строку
С версии 0.9.14-alt5 файл {{path|/etc/pam.d/xrdp-sesman}} стал основан на правилах common-login. Второй сеанс systemd для одного и того же пользователя не удаётся запустить. Если это действительно надо, замените строку
Строка 173: Строка 173:
  session        substack        system-policy
  session        substack        system-policy


== Процесс gvfsd-trash занимает 100% процессора ==
=== Процесс gvfsd-trash занимает 100% процессора ===


Создайте раздел или файл подкачки. Например, по статье: [[Swap]]
Создайте раздел или файл подкачки. Например, по статье: [[Swap]]


== Рабочий стол Mate в сеансе не показывает значки ==
=== Рабочий стол Mate в сеансе не показывает значки ===


Вариант 1.
Вариант 1.
Строка 198: Строка 198:
  exec mate-session
  exec mate-session


== Если пользователь ранее не регистрировал локальный сеанс, то при подключении новым пользователем xrdp не создаёт окружение юзера в /home  ==
=== Если пользователь ранее не регистрировал локальный сеанс, то при подключении новым пользователем xrdp не создаёт окружение юзера в /home  ===
Данная ситуация характеризуется следующей ошибкой при попытке подключения новым пользователем по xrdp:
Данная ситуация характеризуется следующей ошибкой при попытке подключения новым пользователем по xrdp:
  [ERROR] another Xserver might already be active on display 9 - see log
  [ERROR] another Xserver might already be active on display 9 - see log

Версия от 10:29, 7 февраля 2023

Первоначальная настройка сервера 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 — пароль терминального пользователя.
Внимание! Избегайте одновременный сеансов RDP и обычных для одного и того же пользователя. Systemd не позволит полноценно работать в сеансе RDP.


Если пользователь или пароль не указаны, появится окно входа.

Так же вы можете использовать клиент Remmina.

Примечание: В случае проблем с подключением дисков необходимо в настройках подключения в локальных ресурсах отключать галочку “Принтеры»


Примечание: При подключении через клиент Windows на странице авторизации не получится переключить раскладку клавиатуры для требуемого языка ввода. В большинстве случаев по умолчанию стоит русская раскладка, а вводить надо на английском. Перед подключением к Windows необходимо вначале перейти на раскладку, в которой вводится логин и пароль, как правило это EN.


Дополнительно

Для использования сервером установленной графической оболочки MATE выполните следующее:

1. Установите пакет mate-session.

2. Убедитесь, что по умолчанию будет запускаться mate-session:

$ runwm --print default
/usr/bin/mate-session

Экран входа

Xrdp-login-screen.png

Проброс звука

Для прослушивания звука из терминального сеанса локально установите на терминальный сервер пакет 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

Если пользователь ранее не регистрировал локальный сеанс, то при подключении новым пользователем 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