web-dev-qa-db-ja.com

SSH経由でX11を機能させようとしています:サーバーによって接続が拒否されました

Cygwin/X11の使用
SSHのローカルXtermでコマンドを起動します。

xterm -e ssh -Y -v -l MyUser myserver.mydomain.com&

ログイン後、実行しました

setenv DISPLAY myclient.mydomain.com:0.0

Xtermを起動しようとすると、次のようになります。

Xlib: "myclient.mydomain.com:0.0"への接続がサーバーによって拒否されました
Xlib:プロトコルが指定されていません

xterm Xtエラー:ディスプレイを開けません:myclient.mydomain.com:0.0

別のサーバーでは、setenvを実行せずに新しいxtermウィンドウを起動しても問題はありません。
そのサーバーの「echo $ DISPLAY」は「localhost:11.0」を返します

他のサーバーでそれを使用しようとすると、次のようになります。

$ setenv DISPLAY localhost:11.0
$ xterm
xterm Xtエラー:ディスプレイを開けません:localhost:11.0

かなり基本的なものがないと思いますが、それが何かはわかりません。


編集:
$ DISPLAYを設定しないようにしました:

これが結果です

$エコー$ DISPLAY
DISPLAY:未定義の変数。
$ xlogo
エラー:ディスプレイを開けません:

まだ動作していません :-(


再度編集:上記は直接ログインしたものです。 $ DISPLAYを削除したり、xlogoを実行する前に変更したりしていません

2
Luciano

リモート側のディスプレイを設定しないでください。 SSHで-Yパラメーターを使用することにより、(リモート)ローカル側にリスナーが設定され、ローカル側にトンネルされます。

あなたはこれを行うことができるはずです:

local$ ssh -Y user@remote
remote$ xlogo

...そしてxlogoがポップアップします。

編集:これは、ディスプレイが最初にローカルシステムに設定されていることを前提としています。

local$ xlogo

... sshを実行する前に動作するはずです。sshは、元のセッションが正しいディスプレイだと考えるものに転送を戻すだけです。複数のSSHセッションでディスプレイを実行できるため、これは便利です。

local$ ssh remote
remote$ ssh further
further$ xlogo

...うまくいくはずです。

7

Davidは、方程式の半分をほぼ完全に釘付けにしました-sshメカニズムが自動的にxauth認証の設定とディスプレイの定義を処理するため、しないでください DISPLAY変数を自分で設定することで、手動でオーバーライドします。

もう1つの問題は、宛先側の一部のsshデーモンが、丁寧に要求した場合でもX転送を拒否するように構成されていることです。

ssh -vは、サーバーがX転送を許可しない場合に通知します。また、sshd_configを調べて、X転送が許可されていないかどうかを確認することもできます。

2
chris

x11 R5を使用している必要があります。そのリビジョンでは、X11ウィンドウがサーバーで実行されている必要があります。次に、次のコマンドを発行します-

printenv | grep 'X11'
printenv | grep 'ssh'

x11ウィンドウが実行されていることがわかった場合は-

xterm -e 'ssh remote.machine.domain
xhost + remote.machine.domain
setenv DISPLAY local.machine.domain:0.0
xterm &

上記のコマンドを実行したときに、xtermがGUIを表示した場合は、ああ、X11環境はsshで実行するように構成されています。そうでない場合は、X11の最新リビジョンがインストールされていることを確認してください。

これが機能しない場合は、私に連絡してください。ログを調べます。 OK!。

2
Raj Cherukuri

ログイン後に行う必要があります

echo $DISPLAY

おそらく「localhost:11.0」のようなものを取得するでしょう。つまり、sshはローカルホストディスプレイ11への接続をラップトップ上のX11サーバーに自動的に転送します。したがって、プログラムを開始するだけです。

DISPLAYを変更する場合、プログラムにラップトップに直接接続するように指示します(暗号化なし)。これを機能させるには、ラップトップで許可する必要があります( "xhost + myclient.mydomain.com"などのようにします)。

また、「ssh -Y」を実行すると、サーバーでXサーバーはTCPポート6000 + nをリッスンする必要があります。nは信頼できる接続に割り当てられたディスプレイ番号です。することによって:

netstat -l -t 

次に、ポート6000(たとえば6011)の後に開いているものがあるかどうかを確認します。なんらかの理由でDISPLAYが正しく設定されていない場合(同僚のマシンにある可能性がありますか?)、次のことを試してください。

setenv DISPLAY localhost:11.0
1
vladmihaisima

man sshから:

-X   Enables X11 forwarding. This can
     also  be specified on a per-Host
     basis in a configuration file.
0
PP.