72

SSH経由でいくつかのプログラムを実行するとfirefox &、エラーが発生します

Error: no display specified 

stdout各プログラムのを表示したまま、多くのディスプレイを開きたいと思います。

最初の質問:多く表示されるプログラムを取得するために、表示を指定するにはどうすればよいですか?

Pablo Santa Cruzは、解決策として次のコードを提供してくれます。私はこれを理解できません。

$ export DISPLAY=yourmachine.yourdomain.com:0.0

$ firefox &

コマンドには何がyourmachineありyourdomain.comますか?

4

12 に答える 12

77

Xの動作方法は、他のネットワークプログラムの動作方法と同じです。特定のマシンで実行される何らかの説明のサーバー(この場合はXディスプレイサーバー)があり、そのサーバーに接続して情報を表示しようとするXクライアント(Firefoxなど)があります。

多くの場合(「ホーム」マシン上で)、クライアントとサーバーは同じボックスで実行され、サーバーは1つしかありませんが、Xは十分に強力であるため、これを行う必要はありません。これは、最初から組み込まれたサーバー/クライアント分離で構築されました。

これにより、地球の途中でボックスに(テキストモードで)ログオンしたり、ディスプレイサーバーが現在使用しているボックスであることを伝えたり、ウィンドウが突然ローカルに表示され始めたりするなど、すばらしいことができます。

クライアントがユーザーと対話するには、サーバーを見つける方法を知っている必要があります。これを行うにはいくつかの方法があります。多くのクライアントは、-displayまたは--displayオプションでそれを指定することを許可しています。

xeyes -display paxbox1.paxco.com:0.0

表示が具体的に指定されていない場合、多くの人がDISPLAY環境変数を使用します。この変数は他の変数と同じように設定できます。

DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile
export DISPLAY=paxbox1.paxco.com:0.0 # in your shell
DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (shell permitting)

DISPLAY変数の最初の部分は、ディスプレイサーバーマシンのアドレスです。他のIPアドレスと同じルールに従います。解決可能なDNS名(を含むlocalhost)または特定のIPアドレス(192.168.10.55など)にすることができます。

2番目の部分はX固有です。使用するX「ディスプレイ」(Xサーバー)番号と画面番号を示します。最初の(表示番号)は、通常、1つ以上の画面を含むが、単一のキーボードとマウス(つまり、1つの入力ストリーム)を備えたデバイスのグループを指します。画面番号は通常、そのグループ内の特定の画面を示します。

例は次のとおりです。

+----------------------------------------+
|paxbox1.paxco.com|                      |
+-----------------+                      |
|                                        |
|  +----------+----+  +----------+----+  |
|  |Display :0|    |  |Display :1|    |  |
|  +----------+    |  +----------+    |  |
|  |               |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.0| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.1| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.2| |  | |Screen :1.0| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.3| |  | |Screen :1.1| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | | Keyboard  | |  | |  Keyboard | |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |   Mouse   | |  | |   Mouse   | |  |
|  | +-----------+ |  | +-----------+ |  |
|  +---------------+  +---------------+  |
|                                        |
+----------------------------------------+

paxbox1.paxco.comここでは、 2台のディスプレイサーバーを備えた単一のマシン( )があります。最初の画面には4つの画面があり、2番目の画面には2つの画面があります。その場合の可能性は次のとおりです。

DISPLAY=paxbox1.paxco.com:0.0
DISPLAY=paxbox1.paxco.com:0.1
DISPLAY=paxbox1.paxco.com:0.2
DISPLAY=paxbox1.paxco.com:0.3
DISPLAY=paxbox1.paxco.com:1.0
DISPLAY=paxbox1.paxco.com:1.1

実際のウィンドウを表示する場所と使用する入力デバイスによって異なります。

于 2009-07-31T02:06:03.697 に答える
22
$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &
于 2009-04-24T03:39:27.103 に答える
19

SSH経由で別のマシンに接続している場合は、SSHでX転送を有効にして、XウィンドウがSSHトンネルを介して暗号化されてマシンに転送されるようにすることができます。X転送を有効にする-Xには、sshコマンドラインに追加するかForwardX11 yes、SSH構成ファイルで設定します。

X-Forwardingが正常に設定されているかどうかを確認するには(サーバーがそれを許可していない可能性があります)、のecho $DISPLAYような出力を試してみてくださいlocalhost:10.0

于 2009-07-08T01:09:03.597 に答える
14

経由でサーバーにログインします

ssh -X root@yourIP

/ etc / ssh / sshd_configファイルを編集し、この行を追加します。

X11UseLocalhost no

sshdを再起動します。CentOSの場合(ディストリビューションを確認してください

/sbin/service sshd restart

ディスプレイを確認してください

echo $DISPLAY

あなたはこれを見るはずです

yourIP:10.0

楽しみ

firefox

詳細については

于 2018-02-17T10:35:37.063 に答える
13

試す

export DISPLAY=localhost:0.0
于 2009-07-08T01:18:08.820 に答える
9

SSH経由で接続する場合は、$DISPLAYを手動で設定しないでください。
経由で接続しSSH -X、$ DISPLAYが空のままの場合、これは通常、暗号化されたチャネルを確立できなかったことを意味します。

ほとんどの場合、パッケージxauthまたはが不足していますxorg-x11-xauth。以下を使用して、リモートマシンにインストールしてみてください。

sudo apt-get install xauth

また

sudo apt-get install xorg-x11-xauth

その後、SSH接続を再開します。SSH -XXWindow出力がローカルマシンに転送されるように使用することを忘れないでください。

ここecho $DISPLAYで、SSHデーモンによって$DISPLAYが自動的に設定されているかどうかをもう一度確認してください。IPアドレスとポートのある行が表示されます。

于 2017-10-30T11:53:57.990 に答える
8

私は同様の問題に遭遇したので、おそらくこの答えは誰かを助けるでしょう。

Error: no display specifiedエラーの理由は、Firefoxが起動されているが、リモートホストで実行されているXサーバー(GUI)がないためです。X11転送を使用してリモートホストでFirefoxを実行できますが、ローカルホストで表示します。Mac OS Xでは、 X11転送を使用するためにXQuartzをダウンロードする必要があります。これがないと、$DISPLAY変数が設定されないため、試してみるとecho $DISPLAY空白になります。

于 2014-12-31T04:31:51.037 に答える
6

xorg-x11-xauthパッケージをインストールしてみてください。

于 2013-03-11T10:36:35.413 に答える
5

今日も同様の問題に直面しました。Ctrlしたがって、ここに簡単な解決策があります。マシンにSSHを実行しているときに、 -を追加するだけYです。

ssh user@ip_address -Y

ログイン後、と入力しfirefox &ます。そして、あなたは行ってもいいです。

于 2017-12-14T14:58:08.980 に答える
1

私もCentOS6.8で同じことに直面しました。

yum reinstall xorg*

現在のセッションを終了し、mobiXtermなどのツールで別のセッションを開きます。ツールでセッションでX11転送が有効になっていることを確認してください。

于 2017-01-27T10:09:38.203 に答える
0

X11をもっと理解するためにvncを介して。多数表示されるプログラムを取得するための表示を指定するには、DISPLAY = IP:DisplayNum.ScreenNumをエクスポートします。

例えば、

vncserver :2
vncserver -list
echo '$DISPLAY'=$DISPLAY 
export DISPLAY=:2  # export DISPLAY=IP:DisplayNum or export DISPLAY=:DisplayNum for localhost; So that can vnc connect and see the vnc desktop :2 if $DISPLAY is not :2.
echo '$DISPLAY'=$DISPLAY
于 2017-11-20T03:05:46.583 に答える
0

Firefoxと入力する前にxmingサーバーを使用していますが、次のコマンドを使用しますexport DISPLAY = 0:0

于 2021-07-25T08:01:27.913 に答える