Как запустить приложение X с SSH

Я пытался найти эту тему в Google, но без каких-либо существенных результатов.

Мне нужно запустить какое-нибудь приложение с графическим интерфейсом из терминала, но мне все равно, что мне показывает это приложение. Кроме того, мне нужно запустить несколько экземпляров этого приложения в разных сеансах. Это связано с некоторыми автоматизированными тестами с графическим интерфейсом, так что я знаю, чего хочу, и ищу ответ :).

Я думаю, что правильные шаги должны быть:

  1. Инициализировать новый сеанс X window
  2. Получить мой новый идентификатор сеанса
  3. экспортируйте его в переменную env (отображение экспорта: 13.0)
  4. запустите мое приложение

но я застрял на первом шаге. у кого-нибудь здесь была подобная проблема?

--- РЕДАКТИРОВАТЬ: 1) Меня не волнует вывод графического интерфейса - мне нужны только stdout и stderr из моего приложения. - вот почему этот вопрос не дублируется - хорошо знаю Google :). Я не хочу перенаправлять вывод на свой собственный графический интерфейс.

Если вы не хотите видеть, что делает приложение, вы можете предоставить ему "виртуальный" x-сервер с xvfb:

Xvfb предоставляет X-сервер, который может работать на машинах без оборудования отображения и физических устройств ввода. Он эмулирует немой фреймбуфер, используя виртуальную память. Изначально предполагалось, что этот сервер будет использоваться для тестирования сервера, но были найдены и другие новые способы его использования, включая тестирование клиентов на необычных глубинах и конфигурациях экрана, выполнение пакетной обработки с использованием Xvfb в качестве механизма фонового рендеринга, нагрузочное тестирование в качестве вспомогательного средства для переноса X-сервера на новую платформу, и обеспечивает ненавязчивый способ запуска приложений, которые на самом деле не нуждаются в X-сервере, но все равно настаивают на его наличии.

После его установки вы можете запустить его с помощью:

sudo Xvfb :10 -ac -screen 0 1024x768x24 &

он будет работать в фоновом режиме, затем вы запустите своих клиентов с помощью:

DISPLAY=:10 your-client

Короткая команда:

ssh -X <username>@<host> gedit &

от man ssh

-X      Enables X11 forwarding.        This can also be specified on a per-host basis in a configuration file.        X11 forwarding should be enabled with caution.  Users with the        ability to bypass file permissions on the remote host (for the        user's X authorization database) can access the local X11        display through the forwarded connection. An attacker may then        be able to perform activities such as keystroke monitoring.

  1. Проверять /etc/ssh/sshd_config на стороне сервера:

    sudo nano /etc/ssh/sshd_config

    для приведенных ниже строк:

    X11Forwarding yesX11UseLocalhost no

    Перезапустите ssh-сервер, если вы внесли изменения:

    sudo service ssh restart
  2. Проверять /etc/ssh/ssh_config на стороне клиента:

    sudo nano /etc/ssh/ssh_config

    для приведенных ниже строк

    ForwardX11 yesForwardX11Trusted yes

Вам просто нужно запустить export DISPLAY=:id# в вашем сеансе ssh, и запускаемые программы будут выполняться на удаленном дисплее. Краткий пример:

maythux@maythuxPC:~$ ssh testSSH@myServermaythux@maythuxPC:~$ export DISPLAY=:0maythux@maythuxPC:~$ gedit

Сейчас gedit будет выполняться на дисплее пользователя с именем testSSH

Вы можете сократить все это до одной команды:

ssh testSSH@myServer "DISPLAY=:0 nohup gedit"

Я думаю, вы можете просто запустить X, а затем запустить его.

Это непонятно. У вас есть графический рабочий стол, работающий локально? Или вы хотите запустить приложение X без реального отображения, ни локально, ни удаленно?

Посмотрите на Remote X Apps mini-HOWTO — может быть, это поможет.

Rmano: Мне нужно запустить приложение и щелкнуть по нему с помощью robot-framework + selenium library - но мне не нужно видеть никаких выходных данных из графического интерфейса, только логи из моих скриптов - это ответ на ваш вопрос?