Переадресация x11 завершается неудачно, некоторые приложения открываются на удаленном дисплее, а некоторые на локальном дисплее

У меня Mac с xquartz в качестве удаленного клиента для X11 на моем последнем Ubuntu Linux. Я могу подключиться с помощью ssh и запускать приложения, такие как xclock, удаленно. В большинстве приложений, таких как gnome-calculator, приложение открывается на локальном дисплее Ubuntu, а не на удаленном дисплее, как предполагалось. Конфигурация SSH должна быть в порядке, и, насколько я понимаю, это как-то связано с параметром display в x11 forwarding. Любая помощь будет оценена.

0
задан 13 January 2018 в 14:05

3 ответа

Очевидно, sudo app_name помогло. По какой-то причине без sudo приложение запускается как локальное, а не как удаленное отображение. Очевидно, что один и тот же пользователь не может войти в систему с консоли одновременно с удаленным подключением X, запускающим приложение, или он запустит приложение в консоли.

1
ответ дан 13 January 2018 в 14:05

У меня была такая же проблема с ssh -X user @ remote . Некоторые приложения отображаются на локальной стороне (например, xclock), а некоторые - на удаленной стороне (например, gedit). Я считаю, что это проблема всех приложений GTK / Gnome. Это происходило только тогда, когда работал удаленный дисплей (я одновременно использовал NoMachine)

Я нашел обходной путь: отключил переменную окружения XDG_RUNTIME_DIR.

ssh -X -C user@remote
unset XDG_RUNTIME_DIR
gnome-calculator

Тот же эффект достигается при использовании su - $ USER . Здесь важны - .

ssh -X -C user@remote
su - $USER
gnome-calculator

Теперь приложение всегда отображается на локальном дисплее, даже когда удаленный рабочий стол открыт.

3
ответ дан 13 March 2020 в 06:18

Я прочитал здесь три сообщения и думаю, что есть небольшое недопонимание опции -X .

Назначение опции -X клиента ssh - перенаправить удаленный дисплей на локальный, чтобы вы могли запускать удаленные ресурсы и просматривать их локально ... для больше информации читайте в man ssh .

Когда вы используете sudo или su , эти команды просто нарушают нормальную работу X-пересылки, поэтому приложения с графическим интерфейсом пользователя запускаются на удаленном дисплее. Еще кое-что, когда вы используете sudo some-gui-app , он нарушает права собственности на файлы в вашем каталоге $ HOME , что может вызвать некоторые проблемы - исправление: sudo chown -R $ USER: USER $ HOME , а в следующий раз используйте sudo -i ... или sudo -H ... .

Чтобы запустить приложение с графическим интерфейсом пользователя на удаленном дисплее из сеанса ssh, вам необходимо экспортировать значения $ DISPLAY и $ XAUTHORIT (и в некоторых случаях некоторые другие переменные) сеанса рабочего стола, в котором вы хотите запустить приложение - обычно это активный сеанс, в котором пользователь входит в систему, и сеанс отображается на физическом экране.

Некоторое время назад я разработал сценарий bash, который может обнаруживать активный сеанс рабочего стола и экспортировать все его переменные из текущего сеанса (ssh | cron | tty | и т. Д.).Изначально мне нужно было решить аналогичную задачу для crontab , отсюда и оригинальное название скрипта cron-gui-launcher , но у него более широкая область применения. Скрипт, все необходимые объяснения и пара примеров использования доступны в моем репозитории GitHub: https://github.com/pa4080/cron-gui-launcher .

Вот видео, демонстрирующее, как работает сценарий: Ubuntu: CRON GUI Launcher Demo - SSH .

0
ответ дан 13 March 2020 в 11:18

Другие вопросы по тегам:

Похожие вопросы: