web-dev-qa-db-ja.com

追加サーバーを介してSSH X11転送を有効にする方法は?

私はホストA、B、Cを持っています。ホストAからはsshを介してのみアクセスできます。BからはCにアクセスできます。CでX11プログラムを実行し、ディスプレイをAに転送したい.

私はこれを試しました:

A $ ssh -X B 
 B $ ssh -X C 
 C $ xclock 
エラー:ディスプレイを開けません:

しかし、それは機能しません。

34
lexsys

これを行うにはいくつかの方法がありますが、私が好む方法は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を使用することがよくあります。

26
dave

これは、ポート転送を使用して簡単に実現できます。

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を使用します

7
AgentK

問題は、中間のマシンにXがなく、X11の転送を許可するように構成されていることであると想定して、xauthをインストールするだけです。

yumベースのシステム(Fedora、redhat、centos):

B$ Sudo yum install xauth

aptベースのシステム(debian、ubuntu):

B$ Sudo apt-get install xauth
4
Jayen

新しいバージョンのopensshdでは、これを機能させるためにX11UseLocalhostを無効にする必要があります。

これを機能させるには、ホストCの/etc/ssh/sshd_configでこれを実行し、sshdを再起動する必要があります。

X11Forwarding yes
X11UseLocalhost no
3
Brad Allison

使用している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ディスプレイ転送は、かなりの帯域幅を消費します。

2
asdmin

AからCに頻繁に移動する場合は、Bをプロキシとして構成できます。

A:~/.ssh/config

Host C
  ForwardX11   yes
  ProxyCommand ssh -W %h:%p B

それはただです:

A$ ssh C xclock
2
Jayen

試しましたか

A$ ssh -Y B
B$ ssh -Y C
C$ xlclock

-Yフラグ「信頼できるX11転送を有効にする」。

1
pyhimys