7

Я могу получить доступ к моей коробке Linux с помощью SSH и VNC. Я хочу запустить приложение с графическим интерфейсом, но напрямую из ssh я не хочу получать доступ через VNC и щелкать мышью. Итак, после входа в систему с помощью ssh я хочу выполнить магическую команду, чтобы при входе в систему через VNC я видел, как работает мое приложение с графическим интерфейсом. Как я могу это сделать?

редактировать:

На Linux-сервере установлен X-сервер. Мне нужно автоматизировать перезапуск приложения с графическим интерфейсом. Я хочу сделать это без какого-либо взаимодействия с графическим интерфейсом. Что мне нужно:

  1. авторизуйтесь через ssh на SERVER
  2. запустить мое приложение с графическим интерфейсом, принудительно привязав его к X-серверу, работающему на SERVER
  3. ???
  4. PROFIT!

6 ответов6

5

Вы должны переслать X11 на локальный компьютер (с удаленного компьютера). Передайте флаги -X или -Y при вызове ssh.

5

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

Есть две вещи, которые вам нужно сделать. Вам нужно разрешить подключения извне X Windows, а затем вам нужно указать оболочке (в SSH), к какому X-серверу привязываться.

Сначала разрешите входящие соединения с X-сервером. Откройте окно терминала в X Windows на сервере. (Вы должны иметь доступ к этому, в противном случае вы не можете сделать это.)

Выполните следующую команду:

xhost +

Он должен сообщать вам "соединения разрешены со всех хостов" или что-то на этот счет.

Затем, оставаясь в X Windows, выполните:

echo $DISPLAY

Это скажет вам идентификатор дисплея. Запишите это или запомните. Обычно это будет ":0" или ":0.0", но не волнуйтесь, если это не так.

Это все, что вам нужно сделать из самой X Windows.

Теперь SSH на сервер, откуда вы хотите. Выполните команду:

export DISPLAY=[what-the-echo-command-gave-you]

И это должно быть! Теперь вы должны иметь возможность запускать любые X-окна из этой оболочки SSH, и они появятся на локальном X-сервере Windows.

Надеюсь, поможет!

4

То, на каком экране появляется приложение, определяется переменной среды DISPLAY . сделать export DISPLAY=:0.0 чтобы он появился на первом дисплее удаленного компьютера.

0

Во-первых, это не вопрос программирования (s/b serverfault.com)

Однако вам нужно запустить X-сервер в вашей системе (например, что-то вроде XMing), а затем запустить программу с графическим интерфейсом на компьютере с Linux, это поместит графический интерфейс на ваш компьютер.

0

К вашему сведению, вы можете сделать что-то подобное в сфере Windows, например, запустить процесс UNIX, используя WinSSHD и / или Tunnelier .

Если вы имеете в виду запуск графического интерфейса пользователя в локальном сеансе X Windows, то вам нужно установить переменную DISPLAY в значение local (Tunnelier может иметь параметр для этого), и поскольку в Windows вы должны комбинировать это с запуском эмулятора x-window на окнах (таких как Cygwin-X )

0

Я считаю, что проще всего сделать это с помощью терминального мультиплексора, такого как screen или tmux . Это не требует возиться с xhost . копирование и вставка авторизаций или что-то в этом роде.

Основная идея:

  1. На удаленной машине откройте виртуальный X-терминал; в этом виртуальном терминале запустите сеанс screen или tmux . (Это означает, что нужно щелкать в VNC, но это единственный раз, когда вы должны это сделать.)
  2. Теперь, когда вы подключаетесь по SSH к удаленной машине, вы можете подключиться к этому screen или сеансу tmux .
  3. После подключения вы можете запустить любое приложение с графическим интерфейсом, и оно должно появиться на удаленной машине, как если бы вы запустили его оттуда.

Пример экрана GNU:

В виртуальном терминале удаленной машины (открывается через VNC или физически):

you@remote:~$ screen -S myscreen

Затем, когда вы входите в SSH, вы можете просто присоединиться к этому сеансу:

you@remote:~$ screen -x myscreen

А затем, из сеанса экрана, запустите все приложения, которые вы хотите:

you@remote:~$ myapp &

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .