web-dev-qa-db-ja.com

sshX11転送の問題

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変数をファイルに書き込むスクリプトに置き換えました。変数は常に正しく設定されています。

3
user1863

開始するSSH接続は、次の場合にのみ稼働し続けます。

  1. 指定したコマンドが実行されています。
  2. アクティブなX11接続があります。

あなたの場合、「someapp; sleep 1」を指定すると、「someapp」が終了した後、接続が終了する前に、新しいX11接続を確立する必要がある1秒の時間枠があることを意味します。

Someappがバックグラウンドで別のアプリケーションを開始した場合、SSHはそれ自体でいつ終了するかを知ることができません。これは、後でXディスプレイに接続するだけです。したがって、その情報を提供するために何かを検討する必要があります。ランチャーによって生成されたプログラムが終了するまで終了しないラッパースクリプトのように。

または、「1日寝る」と言って幸せになりましょう。

2
Nakedible

やってみました ForwardX11Trusted の代わりに ForwardX11ForwardX11Trustedは、「信頼できる」接続を可能にする新しいオプションです。これは、ローカルXサーバーがリモート接続により多くのことを実行できるようにすることを意味します。

この記事 何が起こっているのか、代わりにこれを使用した場合に何ができるかについて詳しく説明しますForwardX11

2
Doug Harris

また、サーバー側で[X11転送を許可する]を有効にする必要があります。これはSSH1では必要ない/使用されていない可能性があります。

詳細については こちらをご覧ください

0
Steffen