ケース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 後 (-X スイッチなし)、xclock は実行されません。

*ここでは、異なる結果setenv | grep DISPLAYが見られます(case1 と比較)。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 ウィンドウを適切に表示するには、1. ローカル マシンの DISPLAY 変数と 2. ssh-Xスイッチの両方を適切に設定する必要があることがわかります。もちろん、リモート サーバーは X11 転送を許可する必要があります。

答え4

私は Debian ベースのシステム (proxmox) でも同様の問題を抱えていましたが、問題は xorg がインストールされていないことが原因でした。Firefoxapt-get install xorgが機能し始めた後。

関連情報