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; sleep 1」を指定すると、「someapp」が終了した後、接続が終了する前に、新しいX11接続を確立する必要がある1秒の時間枠があることを意味します。
Someappがバックグラウンドで別のアプリケーションを開始した場合、SSHはそれ自体でいつ終了するかを知ることができません。これは、後でXディスプレイに接続するだけです。したがって、その情報を提供するために何かを検討する必要があります。ランチャーによって生成されたプログラムが終了するまで終了しないラッパースクリプトのように。
または、「1日寝る」と言って幸せになりましょう。
やってみました ForwardX11Trusted
の代わりに ForwardX11
? ForwardX11Trusted
は、「信頼できる」接続を可能にする新しいオプションです。これは、ローカルXサーバーがリモート接続により多くのことを実行できるようにすることを意味します。
この記事 何が起こっているのか、代わりにこれを使用した場合に何ができるかについて詳しく説明しますForwardX11
。
また、サーバー側で[X11転送を許可する]を有効にする必要があります。これはSSH1では必要ない/使用されていない可能性があります。
詳細については こちらをご覧ください