Xrdp | |
---|---|
|
|
Разработчик(и) | Jay Sorg, xrdp Team |
Первый выпуск | 2004 |
Лицензия | Apache, GNU GPL |
Репозиторий | xrdp |
Сайт | xrdp.org |
Первоначальная настройка сервера XRDP на сервере
- Установить пакет xrdp:
- Включить и добавить в автозапуск сервисы:
-
# systemctl enable --now xrdp xrdp-sesman
-
Права доступа пользователя:
- Для доступа к терминальному сеансу — включить в группу tsusers:
-
# gpasswd -a user tsusers
-
- Для проброса папки — включить в группу fuse:
Настройки
Настройки сервера хранятся в файле /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:
# apt-get install 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
-
- Убедитесь, что по умолчанию будет запускаться 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
Локальные группы для доменных пользователей
Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей):
В файле /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.
Повышение привилегий
- consolehelper, beesu — ограничений нет;
- polkit — требует создание дополнительных правил для удалённых пользователей. Подробнее описано на https://github.com/neutrinolabs/xrdp/issues/1568#issuecomment-624727037
Производительность
Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты:
Среда | Пакет |
MATE | mate-reduced-resource |
XFCE | xfce-reduced-resource |
См. также: https://askubuntu.com/questions/1283709/xrdp-and-xfce4-ubuntu-18-04-unusable#tab-top
Оптимизация производительности xfreerdp
xfreerdp ... +bitmap-cache /rfx /codec-cache:rfx /compression-level:2 /video
При подключении с linux-машины на linux-машину это очень сильно улучшает производительность передачи графики и видео. Для Windows это не критично (похоже, там нужные опции включаются автоматически).
Решение проблем
Общий подход
Первым делом обратите внимание на логи как сервера, так и сессии:
- /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, если выбрать режим «Воспроизведение звука на стороне клиента» (или аналогичный) возникает ошибка соединения.
Решается запретом воспроизведения звука в настройках клиента или изменением в /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 необходимо выключить звуковую поддержку:
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
Вариант 3.
См. Отсутствует часть пунктов меню в Mate и Xfce
Если пользователь ранее не регистрировал локальный сеанс, то при подключении новым пользователем 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
Отсутствует часть пунктов меню в Mate и Xfce
Проблема возникает из-за некорректного формирования переменной окружения XDG_CURRENT_DESKTOP.
Должно быть, например, XDG_CURRENT_DESKTOP=XFCE или XDG_CURRENT_DESKTOP=MATE, а формируется XDG_CURRENT_DESKTOP=Old. Видимо wm-select не умеет нормально задавать XDG_CURRENT_DESKTOP.
Удаление wm-select решает проблему с ярлыками и урезанным меню (при этом не будет возможности выбрать DE!). Работает как для DE установленного из коробки, так и установленного вручную.
Другой вариант решения, это добавить «export XDG_CURRENT_DESKTOP=XFCE» в скрипт /etc/xrdp/startwm.sh:
... # debian, alt if [ -r /etc/X11/Xsession ]; then pre_start export XDG_CURRENT_DESKTOP=XFCE . /etc/X11/Xsession post_start exit 0 fi ...
Xrdp-usb
Данный компонент пробрасывает широкий спектр устройств, начиная от USB-веб-камер, до USB-токенов и смарт-карт.
Схема работы подключения usb-устройств через xfreerdp. Все дальнейшие действия выполняются под рутом su-.
Терминальный сервер — сервер
Терминальный клиент — клиент
Сервер [ править ]
Перед началом работы, необходимо обновить систему. Обновить систему необходимо как на терминальном сервере (Альт 8 СП), так и на терминальном клиенте (в моем случае это Альт Образование)
На терминальном сервере (Альт 8 СП) устанавливаем xrdp-usb-session:
xrdp-usb-session для сеанса xrdp-sesman добавляет запуск автоподключения всех USB-устройств с клиента.
Далее, после установки xrdp-usb-session необходимо перезапустить службу xrdp-sesman.
Клиент [ править ]
Теперь, переходим к терминальному клиенту (В моем случае, Альт Образование).
Как мы уже говорили выше, обновить систему необходимо как на терминальном сервере, так и на клиенте.
А так же, после установки xrdp-usb-terminal, нам необходимо добавить нашего пользователя в группу disk:
Там где alt-1, необходимо ваше имя пользователя
Далее, после успешной установки xrdp-usb-terminal и после того, как мы добавили нашего пользователя в группу disk, нам необходимо перезагрузить систему (чтобы загрузились все модули) и запустилась служба usbipd. По умолчанию никакие устройства не передаются. Чтобы они передавались, необходимо отредактировать файл xrdp-usb.
Первым делом в терминале с помощью команды lsusb смотрим идентификаторы.
Необходимые для нас данные на скриншоте сверху это идентификатор (в нашем случае это ID 13fe:4300). Теперь нам нужно добавить его в файл /etc/xrdp-usb
Указывать можно сколько угодно идентификаторов, но необходимо быть осторожным с идентификаторами мыши и клавиатуры. Если они будут проброшены, то они не будут доступны на локальной системе.
Проброс [ править ]
На терминальный сервер (Альт 8 СП) необходимо установить openuds-client. Openuds при подключении самостоятельно экспортирует указанные устройства.
Для того, чтобы обратиться к терминальному серверу (через Remmina или xfreerdp), то перед подключением необходимо на клиенте запустить программу usbip-export.
Далее, со стороны клиента подключаемся к терминальному серверу:
- Ключ -r указывает ip-адрес терминального сервера
- Ключ -b указывает идентификатор устройства, который мы отредактировали в файле /etc/xrdp-usb, а так же, который был подтвержден посредством команды usbip-export
При ошибках связанных с подключением, рекомендуется проверить настройки брандмауэра и проверить соответствие версий приложения usbip
Источник
exec startlxde
/.xinitrc для любых рабочих столов можно найти на stackoverflow (необходима установка slim).
Диагностика
Перезагружаем ПК, который выполняет роль сервера.
Проверяем с него же, что сервер Xorg запускается без ошибок:
На этом этапе экран может погаснуть, если вы проверяете XRDP с того же ПК, на котором запущена начальная сессия Xorg. Нужно нажать Ctrl+Alt+F1 ввести имя и пароль, при помощи команды ps -aux | grep xrdp найти номер процесса » sudo xrdp » и завершить его командой » sudo kill «.
В текстовом выводе результата этой команды будет содержаться причина ошибки.
Если же сообщение «(EE) Cannot establish any listening sockets — Make sure an X server isn’t already running(EE)»,
нужно перезагрузить ПК и повторить диагностику.
Второй вариант проверки — перед первым подключением к серверу XRDP, завершаем текущий сеанс «Пуск» — «Выйти» — «Выйти из системы». Так как клиент RDP не сможет создать второй сеанс такого же пользователя (с ошибкой в файле
/.xorgxrdp.10.log: «(EE) Caught signal 11 (Segmentation fault). Server aborting»).
Либо, нужно создать второго пользователя для тестирования подключения к xRDP, которым будем подключаться по протоколу RDP:
Ошибки xRDP сервера в Linux и их решения
Настройка брандмауэра
При невозможности подключения по протоколу RDP к серверу, прежде всего проверить открытие порта на FireWall:
где вместо 192.168.55.100 укажите IP-адрес сервера в локальной сети.
Не забываем открыть локальный порт 3389 на бранмауэре:
Если порт открыт, то вывод:
PORT STATE SERVICE
3389/tcp open ms-wbt-server
Проблема «При подключении с клиента по RDP виден чёрный пустой экран»
На сервере не установлен пакет xorgxrdp — программная «прослойка» между xorg и rdp сервером, который отображает графику — Рабочий стол, указатель мыши и иконки.
Решение — установить на сервер пакет xorgxrdp :
Сеанс xRDP теперь должен работать. Пробуем подключиться!
Примечание: Пакет «xorgxrdp — Remote Desktop Protocol (RDP) modules for X.org» входит в большинство дистрибутивов Debian, а также Ubuntu 18.04 «bionic», 20.04 LTS «focal», 21.04 «hirsute», 21.10 «impish», 22.04 LTS «jammy» (вышла 21.04.2022), и производных ОС на основе DEB-пакетной базы Ubuntu (таких как Runtu, Lubuntu, Xubuntu, Kubuntu и др.), а также дистрибутивы на основе RPM: Fedora, Arch и др.. Поэтому данная инструкция должна работать с множеством версий Linux.
Remmina RDP Client — подключение к серверу
Добавляем подключение — тип RDP.
Если VPN не используется, то в IP адрес вводим «белый» IP-адрес домашнего роутера.
При работе через VPN IP адрес относится к внутренней (локальной, домашней) сети.
Имя и пароль — такие же как при входе «с клавиатуры» на сервере.
Нижние кнопки окна Remmina на нетбуках с разрешением экрана 1024×600 пикселей могут быть обрезаны и видны частично.
«Отменить» — «Сохранить как значения по умолчанию» — «Сохранить» — «Подключиться» — «Сохранить и подключиться»
Нажимаем крайнюю правую кнопку «Сохранить и подключиться».
Различные проблемы
Журналы ошибок в системной каталоге /var/log/:
Журналы ошибок в каталоге пользователя
Просмотреть их можно командами:
Если при подключении с ПК под управлением Windows к ПК под управлением Linux после ввода имени пользователя пароля виден сине-зелёный однотонный фон без текста и иконок,
или в файле XRDP.LOG многочисленные ошибки, значит подключение произошло, но не запустилась графика Xorg — скорее всего из-за старой версии OpenGL, либо прав, см. выше.
Пример ошибки на стороне клиента при попытке подключения с помощью программы MSTSC.EXE:
Сообщения об ошибка в журнале XRDP.LOG на стороне сервера:
или аналогичная [DEBUG] Closed socket 17 (AF_UNIX)
Решение — диагностика командой с рабочего стола машины-сервера:
Нужно добиться отсутствия ошибок Xorg в файле /var/log/Xorg.10.log.
Если при подключении с ПК под управлением Windows виден на мгновение чёрный экран, который тут же закрывается, один из вариантов:
- неправильной имя/пароль пользователя
- неправильный скрипт
/.xinitrc (не запустилась сессия рабочего стола). Проверьте файл
/.xinitrc на наличие команды exec .
Безопасность
Теперь любой ПК в локальной сети сможет подключаться к вашему компьютеру по протоколу RDP. Следует установить для учётной записи пользователя сложный пароль. Если подключение к ПК из Интернет — можно дополнительно использовать VPN с шифрованием трафика.
Дата последнего редактирования 25.04.2022
Источник
Первоначальная настройка сервера XRDP на сервере [ править ]
Права доступа пользователя:
- Для доступа к терминальному сеансу — включить в группу tsusers
usermod -a -G tsusers user
- Для проброса папки — включить в группу fuse
Настройки [ править ]
Настройки сервера хранятся в файле /etc/xrdp/sesman.ini.
(воспользуйтесь поиском в текстовом редакторе, чтобы найти параметр)
- Максимальное количество подключений: MaxSessions
- Разрыв сеанса при отключении пользователя: KillDisconnected
- Авторизация Root: AllowRootLogin=false (true/false)
- Название монтируемой папки: FuseMountName=Mount_FOLDER
Подключение [ править ]
- Epson — название папки, которая будет показываться в каталоге thinclient_drives в домашней папке терминального пользователя, у локального пользователя пробрасывается папка /home/cas/epson;
- 10.4.129.129 — адрес терминального сервера;
- user — имя терминального пользователя;
- 123 — пароль терминального пользователя.
Если пользователь или пароль не указаны, появится окно входа.
Так же вы можете использовать клиент Remmina.
Дополнительно [ править ]
Для использования сервером установленной графической оболочки MATE выполните следующее:
1. Установите пакет mate-session .
2. Убедитесь, что по умолчанию будет запускаться mate-session:
Экран входа [ править ]
Проброс звука [ править ]
Для прослушивания звука из терминального сеанса локально установите на терминальный сервер пакет pulseaudio-module-xrdp :
При использовании в качестве клиента xfreerdp добавьте параметр /sound:sys:pulse
Проброс USB-устройств [ править ]
Для проброса USB-устройств на сервере необходимо установить пакет xrdp-usb:
Данный компонент пробрасывает широкий спектр устройств, начиная от USB-веб-камер, до USB-токенов и смарт-карт. Инструкция по использованию: Xrdp-usb
Доступ доменных пользователей [ править ]
В раздел домена в файле /etc/sssd/sssd.conf необходимо указать ad_gpo_map_service = +xrdp-sesman:
Иначе будет возникать ошибка:
Локальные группы для доменных пользователей [ править ]
Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей):
В файле /etc/xrdp/sesman.ini
После исправления файла запустите
Журнал для sesman (сеансов пользователей) находится в файле /var/log/xrdp-sesman.log .
Данная ситуация возникла потому, что в больших доменах показ всех членов группы нагружает систему, поэтому в /etc/sssd/sssd.conf по умолчанию используется значение enumerate = false
Если в разделе домена в файле /etc/sssd/sssd.conf явно указать enumerate=true:
то в /etc/xrdp/sesman.ini можно указать
Не забудьте перезапустить службы sssd и xrdp-sesman.
Повышение привилегий [ править ]
- consolehelper, beesu — ограничений нет;
- polkit — требует создание дополнительных правил для удалённых пользователей. Подробнее описано на https://github.com/neutrinolabs/xrdp/issues/1568#issuecomment-624727037
Производительность [ править ]
Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты:
Среда | Пакет |
MATE | mate-reduced-resource |
XFCE | xfce-reduced-resource |
Решение проблем [ править ]
Общий подход [ править ]
Первым делом обратите внимание на логи как сервера, так и сессии:
- /var/log/xrdp.log и /var/log/xrdp-sesman.log
/.xorgxrdp.*.log в домашнем каталоге пользователя
Например, такие строчки в последнем свидетельствуют о необходимости запроса пересборки xrdp с текущим xorg-server :
Проблемы соединения с мобильным rdp-клиентом [ править ]
В некоторых мобильных rdp-клиентах, особенно предназначенных для работы на старых версиях Android, если выбрать режим «Воспроизведение звука на стороне клиента»(Или аналогичный) возникает ошибка соединения.
Решается запретом воспроизведения звука в настройках клиента или изменением в xrdp.ini в строке rdpsnd=true, значения true на false. При этом клиент лишается возможности воспроизводить звук, однако в остальном соединение работает.
Проблема подключения с Windows XP [ править ]
Для подключения рабочих станций с Windows XP необходимо в файле /etc/xrdp/xrdp.ini добавить поддержку протокола TLSv1.1:
Эта поддержка была исключена из конфигурации по умолчанию в версии 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 для одного и того же пользователя не удаётся запустить. Если это действительно надо, замените строку
Процесс gvfsd-trash занимает 100% процессора [ править ]
Создайте раздел или файл подкачки. Например, по статье: Swap
Источник
Удаленный рабочий стол в Linux
Установка сервера и клиента RDP в Linux
Существует две наиболее популярные технологии работы удаленных рабочих столов: Virtual Network Computer (VNC) и Remote Desktop Protocol (RDP). VNC в своей работе использует протокол Remote FrameBuffer (RFB). Этот протокол используется на различных платформах, и, как следствие, существуют как серверные, так и клиентские приложения с открытым исходным кодом для Linux, Windows и Mac OS X. RDP же был разработан корпорацией Microsoft и он — единственный протокол такого рода, используемый по умолчанию в Windows.
На первый взгляд, открытый исходный код, платформонезависимость и функциональные преимущества делают VNC лучшим вариантом. Однако если в вашей организации в первую очередь используется продукция Microsoft, RDP может стать решением еще лучше, нежели VNC, даже на компьютерах с Linux. Установить сервер и клиент RDP на небольшом количестве компьютеров с Linux намного проще, чем ставить серверные и клиентские приложения VNC на каждый компьютер, на котором установлена Windows, тем более если таких компьютеров достаточное количество.
В данном руководстве мы рассмотрим, как добиться поддержки RDP в Linux. Мы установим RDP сервер, и, таким образом, пользователи Windows смогут использовать стандартное Подключение к удаленному рабочему столу, чтобы подключиться к Linux-машинам. А затем мы установим RDP клиент, и пользователи Linux смогут подключаться к удаленным компьютерам как с Windows, так и с Linux.
Установка сервера xrdp
Мы будем использовать сервер с открытым исходным кодом — xrdp . Он отображает новый экземпляр всего графического интерфейса, используя Xvnc или X11rdp. Помните, что удаленный пользователь не будет видеть никаких приложений или окон, открытых на текущем рабочем столе, для него это будет чистый рабочий стол. Если вы хотите, чтоб пользователь получал доступ к текущей сессии, то вам нужно установить x0vncserver.
Конечно, первое, что вы должны сделать, — найти пакет xrdp для вашего дистрибутива Linux и установить его и все родительские зависимости при помощи менеджера пакетов. Но также вы можете скачать исходный код и самостоятельно скомпилировать сервер.
После того, как xrdp будет установлен, он автоматически будет готов принимать входящие соединения. Однако если у вас установлен firewall, то необходимо сначала убедиться, что подключение на TCP-порт 3389 разрешено. Также, чтобы соединяться с этим компьютером, находясь вне рабочей сети, необходимо настроить перенаправление портов на роутере.
Если вы хотите разрешить удаленное соединение через Интернет к нескольким компьютерам из одной сети, для этого необходимо изменить порт xrdp-сервера на всех (или на всех, кроме одного) компьютерах. Также надо редактировать настройки портов и на компьютерах с Windows, принимающих RDP-соединения, если, конечно, такие компьютеры имеются. Удаленные пользователи должны указывать номер порта нужного компьютера в настройках соединения, и тогда роутер сможет понять, на какой компьютер перенаправлять соединение. И не забудьте открыть необходимые порты в firewall, если он установлен. Когда присваиваете номера портов, можете, например, начать со стандартного — 3389 и дальше пойти по порядку: 3390, 3391 и т.д.
Чтобы изменить стандартный порт xrdp, откройте файл /etc/xrdp/xrdp.ini (могут понадобиться права суперпользователя), отредактируйте параметр port в секции [globals] и перезапустите xrdp следующей командой (также потребуются права суперпользователя):
Microsoft предоставляет инструкции по редактированию параметров реестра для изменения стандартного порта, используемого в Windows.
Другой способ обеспечить RDP-подключение к разным компьютерам — установить xrdp сервер на одном компьютере с Linux (порт стандартный), затем установить обычные сервера VNC на все остальные компьютеры в локальной сети, все со стандартным портом VNC. Таким образом, когда удаленные пользователи будут подключаться по RDP, они получат окно xrdp, где смогут указать локальный IP-адрес необходимого компьютера для подключения к нему через VNC. В этом случае только один порт должен быть открыт для доступа из сети Интернет и правильно сконфигурирован в настройках роутера.
Подключение к серверу xrdp
Теперь пользователи должны иметь возможность подключиться к необходимому компьютеру. В Windows можно использовать стандартную программу Microsoft — «Подключение к удаленному рабочему столу», а в Linux — rdesktop и tsclient, которые мы чуть позже установим.
Номер порта может быть указан следующим образом: после IP-адреса или доменного имени ставится двоеточие, а после него пишется номер, например: 192.168.0.100:3390. Если же вы не настраивали порты самостоятельно или соединяетесь по стандартному порту (3389), просто введите IP или домен, опустив при этом двоеточие и номер порта.
После соединения через RDP пользователи увидят окно авторизации xrdp, где необходимо ввести имя пользователя и пароль пользовательского аккаунта. Если в вашей локальной сети имеются другие сервера, то вы можете соединиться и с ними, выбрав другой пункт меню Modules.
Установка клиентской программы rdesktop и фронт-энда к нему — tsclient
Если вы хотите, чтобы пользователи Linux тоже могли соединяться с компьютером, на котором установлен RDP-сервер, необходимо установить клиент RDP, такой как rdesktop. После этого можно также установить и GUI к нему, например, tsclient. Найдите и установите пакеты этих приложений для вашего дистрибутива. После установки можно запустить Клиент терминального сервера (tsclient) и с его помощью соединиться с нужным компьютером. Для этого достаточно просто ввести IP-адрес или доменное имя и, если требуется, номер порта после двоеточия, как и в клиенте Microsoft.
Дополнительная справочная информация
Если вам требуется дополнительная справочная информация, посетите сайты xrdp , rdesktop и tsclient . Также вы можете получить больше информации из руководства посредством команд в терминале Linux:
Эрик Гейер — основатель компании NoWiresSecurity , предоставляющей стороннюю поддержку RADIUS/802.1X для фирм, желающих защитить свои свои Wi-Fi сети при помощи корпоративного режима WPA/WPA2 шифрования. Также он является техническим писателем-фрилансером и автор множества работ по сетям и обработке данных для таких серий книг как For Dummies («Для чайников») и Cisco Press.
Источник
0
1
Доброго времени суток.
Пришла пора использовать на работе ПК с отечественной ОС. В качестве отечественной ОС используется AltLinux.
Одна из возникших проблем — обеспечить пользователя возможностью работы на ПК удаленно, продолжая свои действия, начатые пользователем на ПК локально.
ВВОДНАЯ:
Пользователь сел за ПК и начал работать с программами, документами и прочей рабочей мелочью. Далее пользователь встал, и отошел от ПК. Через некоторое время пользователю нужно продолжить работу с ранее открытыми программами, документами и прочей рабочей мелочью удаленно.
ТЕХНИЧЕСКОЕ РЕШЕНИЕ:
На ПК пользователя установлен xRDP, как средство для удаленной работы.
ПРОБЛЕММА:
При подключении к ПК по RDP, для пользователя открывается новая сессия, где пользователь видит пустой рабочий стол, и не видит ранее открытых программам, документов и прочую рабочую мелочь.
ВОПРОС:
Как настроить xRDP таким образом, что бы пользователь подключался к своей, уже запущенной сессии с ранее открытыми программами, документами и прочей рабочей мелочью.
Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров20K
Предыстория этого гайда: для тестирования версии нашего с партнерами ПО под Линукс необходимо было организовать много стендов с разнообразными дистрибутивами (преимущественно отечественными).
Самым простым способом, как мне показалось, являлась аренда виртуалок на облачном сервисе Яндекс Облако, так как там большое количество отечественных образов и все запускается «в пару кликов». За кажущейся простотой скрывалась проблема, с которой ко мне пришли партнеры: «Мы создали виртуалки в облаке, а как туда теперь войти в графическом режиме, как мы это делаем в VMWare/VirtualBox?».
Казалось бы, решение проблемы не так сложно гуглится, но единой консолидированной информации про все интересующие дистрибутивы я не нашел, поэтому собрал этот гайд для себя, партнеров, и… решил поделиться с сообществом, вдруг кому-то еще пригодится.
Дисклеймер 1: Этот гайд не для программистов, не для админов, а для обычных пользователей, тестировщиков и прочих ребят, не считающих нужным (и возможным) изучать множество команд терминала для успешной жизни.
Дисклеймер 2: Вполне возможно, что на других облачных сервисах (например, у VK/MailRu Cloud) все работает чуть лучше и удобнее, но у меня нет ресурсов проверять еще и там.
Раздел 1 – Создаем и подключаемся к виртуальной машине
Глава 1 – Создание виртуальной машины
По началу в Яндекс.Облаке начинается все довольно красиво. Заходим в раздел «Виртуальные машины» (Compute Cloud), где есть очень красивая кнопка «Создать ВМ»
Нажав ее мы видим не менее красивые поля настройки имени виртуальной машины, параметров, и даже чудо – много образов. Фантастика – ничего качать не надо, система сама установится без наших телодвижений и глубоких познаний в настройке файловых систем да прочих умных вещей.
И вот представляем себе обычного пользователя, который, возможно, уже ставил себе Linux на виртуальную машину (или даже прямо на компьютер) – при установке ему выдавалось стандартное предложение ввести логин и пароль для входа в систему.
Разворачивая виртуальную машину в Яндекс.Облаке этого же пользователя ждет микроинфаркт, потому что возможности указать пароль своему пользователю просто нет. Зато есть вот такая настройка:
Господи, что такое SSH-ключ? Я никогда им не пользовался! Как быть? Куда звонить?
Примерно с такими вопросами ко мне прибегали ребята, когда я по началу рассчитывал на то, что они сами со всем справятся.
Глава 2 – Формирование SSH-ключа
А ларчик открывается просто, и нужные инструменты есть даже под Windows (была базовой ОС в нашем случае)
Сформировать ключ можно в командной строке (cmd) с использованием следующей команды с параметрами:
ssh-keygen -t rsa -b 2048
При выполнении команды будет предложено ввести имя файла для сохранения ключа. Если этого не сделать, ключ будет сохранен в файл id_rsa. Для повышения безопасности рекомендуется для каждого подключения (сервера) создавать отдельный ключ. Для примера можно использовать имя файла: habr, а для сохранения в «стандартную» папку .ssh необходимо указать ее в начале пути:
.ssh/habr
Помимо имени файла так же будет запрошен пароль, вы его придумываете сами себе (или берете свой любимый, который используете на всех сайтах для всех учеток, даже от банка), его необходимо обязательно запомнить (а лучше записать), так как он у вас будет запрашиваться при каждом подключении к виртуальной машине в облаке.
Если вдруг при создании SSH-ключа вы получите ошибку, которая говорит о том, что папки .ssh нет — просто создайте ее командой mkdir, ниже на картинке продемонстрирован пример:
После успешного выполнения команды в папке .ssh домашнего каталога пользователя сформируется соответствующий файл с зашифрованным ключом, а так же файл с таким же именем и расширением .pub. Пример содержимого файла:
ssh-rsa AAAAB3Nza … 66piyI1Mhye6qTKyM++v5j drazd@SOMEPCNAME
(начинается на ssh-rsa, заканчивается на имя вашего пользователя@имя компьютера)
Собственно, на этом все сложности с подключением и заканчиваются – содержимое pub файла нужно вставить в поле «SSH-ключ» на странице создания виртуальной машины.
Важно: При вставке из блокнота часто браузер стремится вставить перенос строки в конце SSH-ключа. Обязательно удалите этот перенос, из-за него подключение может не заработать
После создания виртуальной машины (может занимать от 1 до 5 минут) можно подключаться по публичному IP-адресу, который вы можете увидеть в консоли администрирования
Примечание: в рамках данного гайда мы не будем заморачиваться с безопасностью в облаке, об этом при желании можете прочесть в других статьях, здесь делаем упор на том, как в принципе по быстрому запуститься
На данный момент мы можем подключиться только по SSH (удаленное подключение к терминалу \ командной строке в Linux). Для подключения по SSH с использованием RSA-ключа необходимо указать через параметр -i адрес зашифрованного файла с RSA-ключом. Пример:
ssh -i %userprofile%\.ssh\habr habr@IP-адрес
При выполнении команды в первый раз по текущему адресу потребуется подтвердить согласие использовать выбранный RSA-ключ (написать yes). После этого необходимо ввести пароль от RSA-ключа, который был указан на предыдущем шаге при его генерации:
Раздел 2 – Установка графической оболочки и подключение к ней через RDP (mstsc)
После подключения к свежесозданной виртуальной машине по терминалу, обычный пользователь впадает в депрессию, потому что не готов работать только в текстовом режиме. Он хочет, чтобы у него был графический интерфейс. И здесь, сюрприз-сюрприз, у разных дистрибутивов это делается немного по-разному. К счастью, у нас теперь есть этот гайд, в котором есть информация установки графических оболочек для разных дистрибутивов.
Но поставить графическую оболочку мало — к ней просто так по SSH не подключишься, поэтому мы будем так же настраивать возможность подключения по RDP. Почему RDP, а не, например, VNC? Потому что мы идем по кратчайшему пути с минимальным сопротивлением. Возможность подключаться к RDP — стандартная функция ОС Windows, поэтому используем именно его.
Примечание: Мы будем использовать XRDP в самой простой конфигурации. В комментарии приглашаются умные ребята, которые расскажут как делать подключение по XRDP максимально безопасным. В моем кейсе особая безопасность не требовалась (виртуалки создавались на полдня и удалялись), но другим читателям может быть полезно.
Что еще важно учесть во всех случаях – так как мы настраивали подключение к системе через RSA-ключ, то у учетной записи нет пароля (или он нам просто неизвестен). В то же время вход по RDP в нашей конфигурации возможен только по паролю. Поэтому для исправления данной ситуации необходимо войти под учетной записью супер пользователя (sudo su) и выполнить команду смены пароля своего пользователя для его установки:
passwd habr
Установив пароль для своего пользователя, можно выйти из режима супер пользователя командой exit.
Astra Linux Common Edition 2.12, Special edition 1.7 «Воронеж»
По умолчанию в Astra Linux принято использовать графическое окружение fly. Устанавливается оно командами:
sudo apt-get update
sudo apt install fly-all-main
Для запуска окружения необходимо запустить соответствующий сервис:
sudo service fly-dm start
Установка XRDP для подключения к удаленному рабочему столу по протоколу RDP (mstsc):
sudo apt-get install xrdp
sudo systemctl restart xrdp
Для корректного подключения рекомендуется выполнить перезагрузку.
sudo reboot
Далее можно подключаться через средство mstsc и начинать работать
РедОС 7.3.* «Муром»
В РедОС можно использовать множество разных графических окружений, но в данном случае мы воспользуемся mate. Устанавливается оно командами:
sudo dnf repoquery
sudo dnf groupinstall mate
Установка XRDP для подключения к удаленному рабочему столу по протоколу RDP (mstsc):
sudo dnf install xrdp xorgxrdp
После установки xrdp необходимо выполнить ряд настроек под учетной записью su (выполните sudo su для переключения):
echo ‘PREFERRED=»$(type -p mate-session)»‘ >> /etc/sysconfig/desktop
sed -i ‘s/param=Xorg/param=\/usr\/libexec\/Xorg/’ /etc/xrdp/sesman.ini
Выполнить редактирование файла /etc/xrdp/xrdp.ini
nano /etc/xrdp/xrdp.ini
С использованием сочетания клавиш Ctrl+W найти секцию [Xorg], раскомментируйте ее (удалить в начале символы решетки/хэштеги #).
С использованием сочетания клавиш Ctrl+W найти секцию [Xvnc], закомментировать ее (поставить в начале каждой строки символы решетки/хэштеги #)
Должно получиться примерно так:
Для сохранения изменений в текстовом терминальном редакторе nano нажмите сочетание клавиш Ctrl+O, вам предложат ввести новое имя файла — оставьте прежнее, нажмите Enter. Для выхода из редактора нажмите Ctrl+X.
После произведенных настроек включить сервис:
sudo systemctl enable xrdp —now
Для корректного подключения рекомендуется выполнить перезагрузку.
sudo reboot
Далее можно подключаться через средство mstsc и начинать работать
Примечание: Иногда после первого подключения у вас может не появится панель задач (нижняя полоса снизу с кнопкой «Пуск» и списком запущенных программ). Для решения проблемы — подключитесь вновь по ssh и снова выполните перезагрузку.
Добавлено: Если перезагрузка не помогает — необходимо нажать правой кнопкой мыши по непрогрузившейся панели и выбрать пункт «Сбросить все панели» (англ: «Reset all panels»), как правило это исправляет проблему. Если при нажатии правой кнопкой мыши контекстное меню не появляется — необходимо выполнить обновление системы с использованием команды sudo dnf update и повторить попытку после перезагрузки.
ALT Linux 10
По умолчанию в ALT Linux принято использовать графическое окружение KDE. Устанавливается оно командами:
sudo apt-get update
sudo apt-get install kde5 kf5-plasma-workspace kde5-network-manager-nm
Установка XRDP для подключения к удаленному рабочему столу по протоколу RDP (mstsc):
sudo apt-get install xrdp
sudo systemctl enable —now xrdp xrdp-sesman
sudo usermod -a -G tsusers habr
здесь tsusers — группа с доступом к удаленному рабочему столу, а habr — имя вашего пользователя
Для корректного подключения рекомендуется выполнить перезагрузку.
sudo reboot
Далее можно подключаться через средство mstsc и начинать работать
Debian 9, 10, 11
В Debian можно использовать множество разных графических окружений, но в данном случае мы воспользуемся xfce4. Устанавливается оно командами:
sudo apt-get update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Установка XRDP для подключения к удаленному рабочему столу по протоколу RDP (mstsc):
sudo apt-get install xrdp
sudo systemctl restart xrdp
Для корректного подключения рекомендуется выполнить перезагрузку.
sudo reboot
Далее можно подключаться через средство mstsc и начинать работать
Вместо заключения
Особо внимательные читатели данного гайда могут отметить, что здесь перечислены далеко не все доступные в Яндекс.Облаке дистрибутивы. И этот правда. Дело в том, что моим партнерам не требовались все эти дистрибутивы, а были нужны только те, которые есть в этом гайде. Тем не менее, я более чем уверен, что используя информацию отсюда – вы можете добиться тех же результатов в других дистрибутивах (а так же не только в Яндекс.Облаке).
Содержание
- 1 Вступление
- 2 Установка XRDP
- 3 Настройка XRDP
- 4 Добавление возможности переключать раскладку
- 5 Технические моменты
- 6 Устранение проблем, связанных с PC/SC и polkit
Вступление
Для удалённого управления компьютером пользователи 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
Данная процедура должна быть произведена для каждого пользователя, которому необходим удалённый доступ на настраиваемый компьютер.
Добавление возможности переключать раскладку
Необходимо внести правки в конфигурационные файлы:
# nano /etc/xrdp/xrdp.ini
Комментируем блок с [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 закончена.
Если при переходе на удаленный терминальный сервер раскладка набора кнопок Numlock переключается, то необходимо в конфигурационном файле /etc/xrdp/xrdp_keyboard.ini
добавить строку
numlock=on
Для проброса звука необходимо установить пакет pulseaudio-module-xrdp, выполнив команду:
sudo yum install pulseaudio-module-xrdp
Технические моменты
- Внимание! Избегайте одновременных сеансов RDP и обычных(локальных) для одного и того же пользователя. Systemd не позволит полноценно работать в сеансе RDP.
- Для доступа в интернет пользователям, подключенным удалённо, необходимо открыть как минимум порт 80 (в случае если Firewall не отключен).
Открыть порт 80 можно с помощью команды:
firewall-cmd --permanent --add-port=80/tcp
После чего перезапустить сервис firewalld:
sudo systemctl restart firewalld
- Для удаленного запуска программ, таких как Yumex, пользователю, от имени которого происходит запуск, необходимо предоставить права на выполнение данной программы без ввода пароля администратора (root). Один из способов предоставления таких прав пользователю — создание конфигурационного файла в директории /etc/sudoers.d. Для этого потребуется выполнить следующие шаги:
1) Создать файл:
sudo nano /etc/sudoers.d/user
2) Внести строку с названием вашего пользователя и приложения, которому необходимо дать доступ, например:
%user ALL=(ALL) /usr/bin/yum
3) Сохранить файл и выставить права на него
chmod 0440 /etc/sudoers.d/user
4) Проверить правильность синтаксиса файла sudoers
sudo visudo -c
Если команда вернет сообщение «parsed OK», значит, файл sudoers был создан без ошибок.
Устранение проблем, связанных с PC/SC и polkit
Политики Polkit, которые автоматически применяются после установки pcsc-lite пакета и запуска pcscd демона, могут запрашивать аутентификацию в сеансе пользователя после подключения по xrdp. Чтобы решить данную проблему, потребуется создать правило для пользователя или группу пользователям в которой будет разрешено пользоваться смарт-картами.
1) Создаем группу
sudo groupadd smartcard sudo usermod -aG smartcard RUTOKEN
Где smartcard — название вашей группы, RUTOKEN — название пользователя.
2) Создаем правило polkit
sudo nano /etc/polkit-1/rules.d/10-pcsc-lite.rules
3) Добавляем правила для группы smartcard в файл 10-pcsc-lite.rules
polkit.addRule(function(action, subject) { if (action.id == "org.debian.pcsc-lite.access_card" && subject.isInGroup("smartcard")) { return polkit.Result.YES; } }); polkit.addRule(function(action, subject) { if (action.id == "org.debian.pcsc-lite.access_pcsc" && subject.isInGroup("smartcard")) { return polkit.Result.YES; } });
addRule() — опция добавления функции, которая будет отрабатывать каждый раз при работе с политикой.
org.debian.pcsc-lite.access_card — наименование политики, для которой применяется правило, узнать какие политики есть можно командой pkaction
subject.isInGroup(«smartcard»)) — условие, для группы которое мы создали ранее, если нужно выполнить для отдельного пользователя то строка будет выглядеть subject.user == «RUTOKEN»
polkit.Result.YES — разрешает пользователю или группе работу с политикой.
4) Перезапускаем polkit, чтобы применились правила.
sudo systemctl restart polkit