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