Я поместил 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
и с того момента средство просмотра не показывает, когда я нажимаю кнопку.
Я также заменил приложение средства просмотра сценарием, который пишет $DISPLAY
переменная в файл. Переменная всегда устанавливается правильно.
Соединение SSH Вы - инициирование, не ложится спать только пока:
В Вашем случае, когда Вы указываете "someapp; спите 1 дюйм, это означает, что после "someapp" выходы, существует 1 окно второго раза, в котором должно быть установлено новое соединение X11, прежде чем соединение завершается.
SSH не может знать отдельно, когда он должен завершиться, если someapp запускает другое приложение в фоновом режиме, которое только позже соединится с этими X дисплеями - следовательно необходимо разработать что-то, чтобы дать ему ту информацию. Как сценарий обертки, который не выходит до программы, порожденной выходами средства запуска.
Или просто скажите "сон 1 день" и быть счастливыми.
Также необходимо включить AllowX11Forwarding на стороне сервера. Это могло бы быть, что это - не нужный/, используемый для SSH1.
Для получения дополнительной информации посмотрите здесь
Вы попробовали ForwardX11Trusted
вместо ForwardX11
? ForwardX11Trusted
более новые опции, который позволяет "доверяемые" соединения. Это означает, что Ваш локальный X-сервер позволит удаленному соединению сделать больше.
Эта статья обсуждает более подробно, что продолжается и что Вы могли бы открыть себя до того, если Вы используете это вместо этого ForwardX11
.