Иногда мне нужно запустить медиаплеер XMBC или другое программное обеспечение с графическим интерфейсом на одном из моих удаленных ПК (небольшой ПК Xubuntu, используемый в качестве медиацентра).
Обычно я делаю это, запуская сервер X11vnc на удаленном ПК через SSH, а затем подключаясь с помощью клиента Xvnc к рабочему столу Xfce.
Есть ли способ запустить программное обеспечение с графическим интерфейсом на удаленном ПК с Linux через SSH?
Да. Тебе просто нужно бежать export DISPLAY=:0 (или как там пронумерован удаленный дисплей) в вашем сеансе ssh, и запускаемые программы будут выполняться на удаленном дисплее. Краткий пример:
Однако, когда вы закрываете свой сеанс ssh, в большинстве случаев удаленное приложение закрывается. Если вы хотите отключиться от ssh, но оставить приложение запущенным, вам нужно запустить его особым образом, используя что-то вроде screen (поддерживает сеанс ssh в фоновом режиме) или nohup, или другим способом. Для получения дополнительной информации об этом недавно был задан еще один вопрос по этому поводу.
Вы можете сократить все это до одной команды, которая подключится, экспортирует отображение в строке и запустит приложение таким образом, чтобы оно не закрывалось после завершения сеанса ssh:
Зависит от того, где вы хотите видеть отображаемое приложение
Чтобы отобразить приложение на вашем локальном компьютере
Сначала вы подключаетесь по ssh к удаленному компьютеру с помощью дополнительного -Y опция и запуск приложения (например, firefox):
ssh -Y ...firefox
Если -Y не работает, проверьте конфигурацию sshd на удаленном компьютере (см. Ответ Дениса Лукиных). Другим подобным вариантом является -X. Погуглите в поисках отличий.
Для отображения приложения в существующем сеансе на удаленном компьютере
Вам нужно войти в систему с помощью пользователя A на удаленном компьютере и оставить сеанс открытым. После этого вы можете подключиться по ssh к тому же пользователю A и запустить приложение (например, firefox) следующим образом:
ssh A@...DISPLAY=:0 nohup firefox
Для отображения приложения нигде
Вам нужно установить и запустить xvfb. xvfb создаст невидимый сеанс X в DISPLAY 10. Затем вы запускаете свое приложение, направляя его выходные данные на этот DISPLAY:
Современное решение, которое также должно работать с сеансами Wayland, настроить все переменные среды, используемые в современных сеансах (XDG_RUNTIME_DIR, GTK_MODULES, XDG_DATA_DIRS, XAUTHORITY, SESSION_MANAGER и т.д.), Перенаправить вывод консоли приложения в журнал и запустить его в фоновом режиме, не крадя вашу ssh-оболочку и не завершая работу, когда вы закрываете сеанс ssh:
ssh tim export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bussystemd-run --user firefox