私はホストA、B、Cを持っています。ホストAからはsshを介してのみアクセスできます。BからはCにアクセスできます。CでX11プログラムを実行し、ディスプレイをAに転送したい.
私はこれを試しました:
A $ ssh -X B B $ ssh -X C C $ xclock エラー:ディスプレイを開けません:
しかし、それは機能しません。
これを行うにはいくつかの方法がありますが、私が好む方法は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を使用することがよくあります。
これは、ポート転送を使用して簡単に実現できます。
A$ ssh -NL 2022:C:22 B &
A$ ssh -X -p 2022 localhost
C$ xclock
ポートlocalhost:2022はBを介してC:22に転送されますlocalhost:2022を介してCにSSH接続します通常どおりXを使用します
問題は、中間のマシンにXがなく、X11の転送を許可するように構成されていることであると想定して、xauthをインストールするだけです。
yumベースのシステム(Fedora、redhat、centos):
B$ Sudo yum install xauth
aptベースのシステム(debian、ubuntu):
B$ Sudo apt-get install xauth
新しいバージョンのopensshdでは、これを機能させるためにX11UseLocalhost
を無効にする必要があります。
これを機能させるには、ホストCの/etc/ssh/sshd_config
でこれを実行し、sshdを再起動する必要があります。
X11Forwarding yes
X11UseLocalhost no
使用しているsshdでX11Forwardingが無効になっていると、X11ディスプレイを転送できません。
man sshd_config:
X11Forwarding
Specifies whether X11 forwarding is permitted. The argument must be “yes”
or “no”. The default is “no”.
X11Forwardingが宛先で有効になっていることを確認する必要がありますand使用しているすべての中間sshd。
ほんの小さなヒント:VNCを使用してみてください。X11ディスプレイ転送は、かなりの帯域幅を消費します。
AからCに頻繁に移動する場合は、Bをプロキシとして構成できます。
A:~/.ssh/config
:
Host C ForwardX11 yes ProxyCommand ssh -W %h:%p B
それはただです:
A$ ssh C xclock
試しましたか
A$ ssh -Y B
B$ ssh -Y C
C$ xlclock
-Yフラグ「信頼できるX11転送を有効にする」。