Я вставил 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выводит следующее
и с этого момента зритель не показывает, когда я нажимаю кнопку.
Я также заменил приложение Viewer на скрипт, который записывает $DISPLAYпеременную в файл. Переменная всегда установлена правильно.
«Причина, по которой мне нужно -2» - надеюсь, вы не говорите, что в противном случае вы бы использовали SSH1 ...
grawity 14 лет назад
0
@ Grawity: О боже, люди все еще используют ftp, откуда я родом ... не спрашивайте ...
user1863 14 лет назад
0
@bbuser: FTP не так уж и плох - широко поддерживается, надежен, имеет поддержку SSL / TLS и так далее. И SSH1 считается устаревшим почти везде. (Но я не собираюсь спорить об этом сейчас.)
grawity 14 лет назад
0
@ Grawity: Я согласен, я просто думал, что вы намекаете на проблемы безопасности в ssh1.
user1863 14 лет назад
0
3 ответа на вопрос
2
Doug Harris
Вы пробовали ForwardX11Trustedвместо ForwardX11? ForwardX11Trustedэто более новые опции, которые позволяют «доверенные» соединения. Это означает, что ваш локальный X-сервер позволит удаленному соединению делать больше.
В этой статье более подробно обсуждается, что происходит и что вы могли бы открыть для себя, если вы используете это вместо этого ForwardX11.
Я пробовал * ForwardX11Trusted yes * в дополнение (не вместо) ForwardX11 yes. Это то, что я понимаю из (очень интересной) статьи, на которую вы ссылались. К сожалению, это ничего не изменило.
user1863 14 лет назад
0
2
Nakedible
Соединение SSH, которое вы инициируете, сохраняется только до тех пор, пока:
Указанные вами команды выполняются.
Есть активные подключения X11.
В вашем случае, если вы укажете «someapp; sleep 1», это означает, что после выхода «someapp» существует 1-секундное временное окно, в котором должно быть установлено новое соединение X11, прежде чем соединение будет разорвано.
SSH не может знать сам, когда он должен завершиться, если someapp запускает другое приложение в фоновом режиме, которое только позже подключится к дисплею X - следовательно, вам нужно что-то придумать, чтобы дать ему эту информацию. Как скрипт-обертка, который не завершается, пока не завершится программа, созданная средством запуска.
Или просто скажи "спи 1 день" и будь счастлив.
Спасибо Nakedible, в этом много смысла, а еще лучше: он работает :-)
user1863 14 лет назад
0
0
Steffen
Вы также должны включить AllowX11Forwarding на стороне сервера. Возможно, это не нужно / используется для SSH1.
Переадресация X11 разрешена на стороне сервера, иначе я бы вообще не получил никакого окна X11 на клиенте. Проблема заключается в том, что дочерний процесс порожден из приложения.
user1863 14 лет назад
0