3

Я поместил ForwardX11 в мой ~/.ssh/config а затем я запускаю приложение X11 следующим образом:

ssh -f user@host 'someapp; sleep 1'

Это отлично работает.

В приложении someapp есть кнопка, которая открывает приложение просмотра через сценарий оболочки viewer.sh . Когда я нажимаю кнопку, зритель появляется.

Это все хорошо и как ожидалось, но если я сделаю

ssh -2 -f user@host 'someapp; sleep 1'

есть проблема someapp запускается очень хорошо, но если я нажму кнопку, зритель не появится.

Поскольку зритель вызывается с помощью сценария оболочки, я заменил вызов на xclock и ситуация была точно такой же - я думаю, что зритель не виноват. Ситуация одинаковая на Linux и AIX.

Причина, по которой мне нужно -2 заключается в том, что я, наконец, хочу использовать мультиплексирование соединений, и это работает только с версией 2. Причина sleep 1 том, что иначе не получилось ;-)

Чтобы добавить больше путаницы, с

ssh -2 -f user@host 'xterm &; app; sleep 1' 

зритель работает, пока открыт xterm. Когда я закрываю xterm ssh -v выводит следующее

debug1: channel 1: FORCE input drain
debug1: channel 0: free: client-session, nchannels 3
debug1: channel 1: free: x11, nchannels 2

и с этого момента зритель не показывает, когда я нажимаю кнопку.

Я также заменил приложение Viewer на скрипт, который записывает переменную $DISPLAY в файл. Переменная всегда установлена правильно.

3 ответа3

2

Соединение SSH, которое вы инициируете, сохраняется только до тех пор, пока:

  1. Указанные вами команды выполняются.
  2. Есть активные подключения X11.

В вашем случае, если вы укажете «someapp; sleep 1», это означает, что после выхода "someapp" существует 1-секундное временное окно, в котором должно быть установлено новое соединение X11, прежде чем соединение будет разорвано.

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

Или просто скажи "спи 1 день" и будь счастлив.

2

Вы пробовали ForwardX11Trusted вместо ForwardX11? ForwardX11Trusted - это более новые опции, которые разрешают "доверенные" соединения. Это означает, что ваш локальный X-сервер позволит удаленному соединению делать больше.

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

0

Вы также должны включить AllowX11Forwarding на стороне сервера. Возможно, это не нужно / используется для SSH1.

Подробности смотрите здесь

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