クライアントAからマシンC上でXアプリケーションをリモートで実行したい。このマシンに接続する唯一の方法は、マシンB(ファイアウォール)をホップとして使用することです。
A-> B-> C
これまでのところ、単純なsshは期待どおりに機能しますが、X11転送を実行できません。
私はいくつかの同様の質問を見つけましたが、それらはすべてX11がBで実行されていることを前提としていると思います。 追加のサーバーを介したSSH X11転送を有効にする方法 私の設定では機能していないようです。
X11をCからBに、BをAに転送するには、BでXサーバーを実行する必要があるのでしょうか。
この記事に従って、Aで〜。/ ssh/ssh_configを設定しました: http://sshmenu.sourceforge.net/articles/transparent-mulithop.html
を使用してCからX11を接続して転送しようとすると
$A: ssh -X C
Bを介してCに接続しますが、X11転送はありません(BとCでは有効になっています)。
$C: echo $DISPLAY
$C: glxgears
Error: couldn't open display (null)
私の設定/セットアップが原因で問題が存在するのか、それとも一般的にWordではないのかわかりません...同様の問題/経験を持つ人が私を助けてくれれば幸いです!
X11転送が説明されているマルチホップシナリオで機能するとは思わない。
ただし、最初にC:22へのポート転送でssh接続A-> Bを確立し、次に確立された「直接」接続を介してX11転送でCに接続すると、問題なく機能するはずです。
次のようなもの:
A $ ssh -L2200:C:22 -N B
(おそらくそれを背景に置く)
に続く:
A $ ssh -X -p2200 localhost
X11転送では、すべてのマシンにxauthが必要なマルチホップセットアップライン。これは、マシンBで必要な唯一のX11アプリケーションです。マシンAは、Xサーバーを必要とする唯一のマシンです。もちろん、マシンCにはX11アプリケーションが必要ですが、Xサーバーは必要ありません。理論的には、マシンAにX11アプリケーションがなくてもこれを実行できます。
ProxyCommandを使用している場合は、ProxyCommandに-Xを使用しないでください。 ProxyCommandは、すべての高度な機能を無効のままにしておく必要があります。必要なのは、ProxyCommandの最低限の機能だけです。
ProxyCommandを使用してAからBにsshし、ncを使用してCのポート22に接続すると、AのsshクライアントはCのsshサーバーと通信します。これは、Bで何も起こらないことがどの機能に影響を与える可能性があることを意味します。 AとCの間を利用できます。通信はBを通過するときに暗号化されるため、Bが影響を与えることは不可能です。
X11転送が機能しない理由の説明は、AまたはCのいずれかで見つける必要があります。Aで入力したコマンドは私には正しいように見えるので、2つの説明が残っています。