ケース1

ケース1

リモートサーバーにログインして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端末にコマンドが入力されたことです。

答え1

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

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

誰かの時間を節約してください。

答え2

cygwin 環境に DISPLAY 変数が設定されていることを確認してください。

export DISPLAY=:0.0

SSHを使用して接続した後、シェルが正しいDISPLAY変数を知っていることを確認してください。

echo $DISPLAY

答え3

助けてくれた@jensd、@unxnutに感謝します。あなたの意見に基づいて問題を特定することができました。

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

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

私の以前の試みでは、これら2つの条件のうちの1つまたは両方が不足していました。

とにかく、後でこの記事を見ている人のために私が言いたいことを示すためにいくつかの例を挙げてみましょう。

ケース1

私のローカルコンピュータには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:サーバー端末にエラーが表示されます。

ケース2

今回はローカルマシンで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*ここでは他の結果を見ることができます(ケース1と比較)。 Case2 の場合、結果は空です。一方、そのコマンドラインのcase1の結果は次のとおりですDISPLAY: undefined variable。この違いがどのように発生するかはわかりませんが、条件1を満たすか2を満たすかと関係があると予想されます。

ケース3

今回は、ローカルコンピュータで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 Windowsが正常に表示されるためには、1.ローカルマシンのDISPLAY変数と2. SSH-Xスイッチを正しく設定する必要があることを確認できます。もちろん、リモートサーバーはX11転送を許可する必要があります。

答え4

Debianベースのシステム(proxmox)でも同様の問題がありましたが、xorgがインストールされていないために問題が発生しました。apt-get install xorgFirefoxが起動し始めた後。

関連情報