Приложение отправляет окно на локальную машину с X11, а не на удалённый рабочий стол на виртуальной машине.

Вопрос или проблема

Я подключаюсь к виртуальной машине с помощью PuTTY, чтобы настроить SSH-туннель с переадресацией портов, чтобы затем подключиться к удаленному рабочему столу с помощью RDP. Я начинаю с Windows и попадаю на Ubuntu 22.04 с xrdp и xfce4.

Почему-то, когда я открываю оконное приложение на удаленном рабочем столе через удаленный терминал (т.е. тот, который вы открываете из RDP), приложение не открывается на удаленном рабочем столе, а вместо этого пытается отправить окно на X-сервер. Если я добавляю перенаправление X11 к соединению SSH-туннеля, то приложение открывается в окне на моем локальном компьютере. Если у меня нет перенаправления X11, то приложение выдает ошибку, говоря, что не может найти дисплей.

Почему это происходит, и как я могу заставить его открываться на удаленном рабочем столе?

После довольно значительного количества проб и ошибок я выяснил, что коренной причиной этого поведения было то, что я вошел в другую учетную запись пользователя, используя sudo su для запуска приложения.

Когда я скопировал приложение в учетную запись пользователя, которую я использовал для входа в сессию RDP, приложение открылось в окне на RDP.

Почему-то вход в другую учетную запись пользователя таким образом хочет перенаправить окна на X11.

Ответ или решение

Почему приложение открывается локально при использовании удаленного рабочего стола на VM

При работе с виртуальными машинами и удаленными сеансами возникают множественные нюансы, касающиеся конфигурации и взаимодействия протоколов. В вашем случае проблема заключается в том, что, когда вы пытаетесь запускать оконные приложения из сеанса RDP на Ubuntu 22.04, они не открываются в контексте удаленного рабочего стола, а вместо этого пытаются отправляться на X-сервер вашего локального компьютера. Рассмотрим более подробно причины этого явления и возможные решения.

Описание проблемы

Вы используете PuTTY для подключения к виртуальной машине (VM) с использованием SSH-туннелирования и перенаправления портов. После подключения, вы запускаете удаленный рабочий стол, установленный с помощью xrdp и xfce4, что позволяет вам взаимодействовать с графической средой Ubuntu.

Однако при запуске приложений через терминал, открытый в случае RDP, они ведут себя неожиданным образом:

  • Если включено X11-прокси, то приложение открывается на вашем локальном системе.
  • При отключении X11-прокси приложение выдает ошибку о недоступном дисплее.

Анализ проблемы

Как вы правильно заметили, основной причиной данной проблемы является использование команды sudo su для переключения на другого пользователя. При выполнении этой команды создается новый контекст сеанса, который не имеет доступа к уже установленному дисплею X-сервера для текущего пользователя, с которым вы вошли в сеанс RDP. Вместо этого приложение попытается подключиться к X11-серверу на вашем локальном компьютере (в случае использования X11-прокси), что приводит к его открытию локально.

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

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

  1. Используйте su - вместо sudo su:
    Используйте команду su - <имя_пользователя> вместо sudo su, чтобы переключиться на другого пользователя, сохраняя соответствующие переменные окружения, в том числе DISPLAY, который указывает на текущий дисплей RDP.

  2. Запуск приложений в правильном контексте:
    Убедитесь, что приложения запускаются от имени пользователя, с которым вы вошли в RDP. Это может включать в себя копирование необходимых исполняемых файлов или настройку прав доступа.

  3. Настройка переменной окружения DISPLAY:
    Если вы всё же хотите использовать другой пользовательский контекст, убедитесь, что переменная DISPLAY выставлена правильно. Это можно сделать при выполнении команд для запуска приложений:

    export DISPLAY=:0  # или другое значение, соответствующее вашему X-серверу
  4. Используйте xhost для настройки доступа к дисплею:
    Если вы хотите, чтобы другие пользователи могли получать доступ к вашему дисплею, используйте xhost для настройки прав доступа:

    xhost +local:

    Это позволит всем локальным пользователям подключаться к вашему дисплею. Обратите внимание на возможные угрозы безопасности при использовании этой опции.

Заключение

Ваш случай является классическим примером проблемы, возникающей из-за неправильной конфигурации сеансов и прав доступа при использовании удаленных рабочих столов в Linux. Следуя вышеперечисленным рекомендациям и учитывая особенности работы с Gnu/Linux, вы сможете обеспечить корректное открытие оконных приложений в вашем RDP-сеансе. Если у вас возникнут дальнейшие вопросы или потребуется помощь, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...