解決策 1:
これにはいくつかの方法がありますが、私が好むのは ssh ポートを転送する方法です:
まず、マシン B に接続し、[localPort] を B 経由で C:22 に転送します
A$ ssh -L [localPort]:C:22 B
次に、[localPort] を使用して、この新しく作成されたトンネルを介して A から C に接続し、X11 を転送します
A$ ssh -X -p [localPort] localhost
これで、C で X11 プログラムを実行し、A で表示できます
C$ xclock
[localPort] は、A でまだリッスンしていない任意のポートにすることができます。簡単にするために、私はよく 2222 を使用します。
解決策 2:
これは、ポート転送を使用して簡単に実現できます:
A$ ssh -NL 2022:C:22 B &
A$ ssh -X -p 2022 localhost
C$ xclock
ポート localhost:2022 は BSSH 経由で C:22 に転送され、localhost:2022 経由で C に転送されます。通常どおり X を使用します
解決策 3:
試してみましたか
A$ ssh -Y B
B$ ssh -Y C
C$ xlclock
-Y フラグ「信頼できる X11 転送を有効にします。」
解決策 4:
中間のマシンに X がなく、X11 の転送を許可するように構成されていることが問題であると仮定すると、xauth をインストールするだけです。
yum ベースのシステム (fedora、redhat、centos):
B$ sudo yum install xauth
apt ベースのシステム (debian、ubuntu):
B$ sudo apt-get install xauth
解決策 5:
新しいバージョンの opensshd では、X11UseLocalhost
を無効にする必要があります これが機能するために。
ホスト C の /etc/ssh/sshd_config
でこれを行う必要があります これを機能させるには、sshd を再起動します:
X11Forwarding yes
X11UseLocalhost no