なぜsshログインでx11ディスプレイが機能しないのですか?


22

リモートサーバーにログインし、xアプリケーション(Firefoxなど)を表示しようとしています。エラーメッセージが表示されます。以下はFirefoxを開く私の試みです

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.

Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ 

-X、-Yを使用したのは、これら2つのオプションがX11に関するクレデンシャルに関連していることをどこかで読んだためです。-X、-Yスイッチがなくても、私の試みは失敗しました。

「表示が指定されていません」エラーとはどういう意味ですか?

PS奇妙なことは、PUTTYを介してリモートサーバーに接続し、コマンド 'firefox'を繰り返すと、それが機能するということですか?!?!(firefoxはローカルコンピューターに表示されます)

PS私のローカルコンピューターはWindows 7なので、X11を表示できるようにするためにXmingをバックグラウンドで実行しています。上部に書かれた試みに関しては、コマンドはCygwinターミナルで入力されました。


Cygwin端末から何かをローカルに表示しようとしましたか?たとえば、xclockなどのローカルXユーティリティを見つけて実行し、何が起こるかを確認できます。ローカルに表示できない場合、リモート表示は機能しません。Cygwin用のXサーバーも必要になる場合があります。
unxnut 14年

1
あなたが指摘したように、@ unxnut、私のDISPLAY変数は設定されていませんでした。export DISPLAY=:0.0' and executed xclock`で設定すると、xclockが表示されました。私はその後、SSH経由でのリモートサーバーにログインし、しようとしたときしかしxclock、再び、それは言うError: Can't open display:
kwagjj

回答:


16

cygwin-environmentでDISPLAY変数が設定されていることを確認してください。

export DISPLAY=:0.0

SSHで接続した後、そのシェルが正しいDISPLAY変数も知っているかどうかを確認します:

echo $DISPLAY

4
ローカルコンピューターのcygwinターミナルでDISPLAY変数を設定し、その後、リモートサーバーにsshして入力しましたecho $DISPLAY。しかし、まだリモートサーバでDISPLAY変数が何に設定されている...
kwagjj

2
Error: Can't open display: :0.0
アーメド

2
これを実行しますexport DISPLAY=localhost:0
。-トローネ

18

ヘッドレスRHEL7サーバーへの接続でこの問題が発生しました。

DISPLAY変数を設定し、適切に認証するには、ホストにxorg-x11-xauthパッケージをインストールする必要があります。

いつか誰かを救ったことを願っています。


3
まさに私が探していたもの。とても有難い!
ジョシュケイン

1
素晴らしい答えです!他のソリューション(エクスポート経由でDISPLAYを手動で設定する)では、クライアントとサーバー間で暗号化されていない送信が行われます!Debian Squeezeでは、すべてを機能させるためにインストールする必要があるパッケージ「xauth」でした。ごとの再ログイン後にURL +ポートとのコール返さローカルウィンドウで開いた端末を。ssh -Xecho $DISPLAYxterm &
-Jpsy

7

私を助けてくれた@ jensd、@ unxnutに感謝します。あなたのコメントに基づいて、私は問題を理解することができました。

ソリューションには2つのステップが必要でした。

  1. DISPLAY変数を適切に設定する必要があります。
  2. リモートサーバーにSSH接続するときは、-Xスイッチがオンになっている必要があります

以前の試みでは、これらの2つの条件の一方または両方が欠けていました。

とにかく、これを見た後のユーザーのために、これは私が言いたいことをあなたに示すための例です。

case1

ローカルマシンにはDISPLAY変数が設定されていません。そして、-Xスイッチを使用してリモートサーバーにsshし、実行してみxclockます。

Black@Black-PC ~
$ echo $DISPLAY

## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.

ご覧のError: Can't open display:ように、リモートサーバーのターミナルにエラーが表示されます。

case2

今回は、ローカルマシンでDISPLAY変数を指定します。ただし、sshを実行しているときは、-Xスイッチをオンにしません。結果は失敗になります。

Black@Black-PC ~
$ export DISPLAY=:0.0

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$ 

最初に、DISPLAY変数が適切に設定されていることがわかります。ただし、ssh'ing(-Xスイッチなし)の後、xclockは実行されません。

*ここで異なる結果をsetenv | grep DISPLAY見ることができます(case1と比較してください)。case2では、結果は単なる空白です。一方、このコマンドラインのcase1の結果はDISPLAY: undefined variable...です。この違いがどのように発生するかはわかりませんが、条件1または2のいずれかを満たすかどうかに関連する予感を得ています。 。

case3

今回は、ローカルマシンでDISPLAY変数を適切に指定し、-Xスイッチをオンにしてリモートサーバーにsshを指定します。

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from 
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$

この設定でxclock動作します!! これは私が嘘をついていないことを証明するスクリーンショットです。 ここに画像の説明を入力してください ローカルマシンでxclockが正常に表示されます。

setenv | grep DISPLAYこの場合も、結果を確認してください。現在表示されますDISPLAY=localhost:11.0。私が知っていることから、これは.XauthorityファイルのMIT-MAGIC-COOKIEに関連していますが、これについてあまり知らないので、これ以上先に進みません。

結論:上記の3つのケースから、リモートXウィンドウを適切に表示するには、1。ローカルマシンのDISPLAY変数と2. ssh -Xスイッチの両方を適切に設定する必要があることを確認できます。もちろん、リモートサーバーはX11転送を許可する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.