2011-07-13 18:13:00 +0000 2011-07-13 18:13:00 +0000
117
117

X11転送を有効にしてssh'ingした後にXプログラムを開いた時に "cannot open display "エラーが発生するのですが、どうすれば直りますか?

Mac(OS X 10.6.6.8)でX11アプリ(XQuartz 2.3.6, xorg-server 1.4.2-apple56)を起動し、X11でターミナルを開いてxhost +を実行した後、Ubuntu 10.04 VM(VMware Fusion上で動作しています)にssh -Yを実行しています。gedit .bashrcを実行すると(例えば)以下のようになります:

(gedit:9510): Gtk-WARNING **: cannot open display:

set | grep DISPLAYは何も返しません。

しかし、私のUbuntu 11.04マシンにssh -Yを実行すると、gedit .bashrcは動作します。

私は私のVMにsshedしてからecho $DISPLAYを実行しながらexport DISPLAY=localhost:10.0を試してみましたが、私は取得します:

(gedit:9625): Gtk-WARNING **: cannot open display: localhost:10.0

何が2つの異なるUbuntuマシンの設定で異なる可能性がありますか?

更新:下のコメントの Zoredache によって提案されたように、私はgedit .bashrcを実行しましたが、私は同じ問題を抱え続けています。

回答 (14)

62
62
62
2012-02-21 08:47:03 +0000

From xhost+ : リモートサーバでGUIを起動中に「表示が開けない」エラーを修正する方法 :

回答 . この記事で紹介しているxhostの手順を実行することで「表示が開けない」エラーを修正することができます。

クライアントがどのホストからでもxhost+で接続できるようにする

以下のコマンドを実行してアクセス制御を無効にし、どのホストからでもクライアントが接続できるようにします。

$ xhost +

アクセス制御を無効にすると、どのホストからでも接続できるようになります

X11転送を有効にする

sshを実行している間に、-Xオプションを使用してX11転送を有効にします。

$ ssh username@hostname -X

-Yオプションを使用して、信頼できるX11転送を有効にします。

それでも “cannot open display "エラーが出る場合は、以下のようにDISPLAY変数を設定してください。

$ ssh username@hostname -Y

注意:IPはGUIアプリケーションを表示させたいローカルワークステーションのIPです。

49
49
49
2011-07-13 18:54:50 +0000

サーバの sshdconfig (通常は `/etc/ssh/sshdconfig`) をチェックして、X11Forwarding オプションが

X11Forwarding yes

という行で有効になっていることを確認してください。 X11Forwarding が指定されていない場合、私がチェックできる Debian マシンではデフォルトは no です。

18
18
18
2012-06-29 20:44:03 +0000

Mac OS XからUbuntuのVMにログインするときにもこの問題がありました – 何らかの理由で表示変数の'localhost'が気に入らないようです。そこでharrymcさんが提案しているように、手動でIPを設定してみてください。localhostと127.0.0.1が等価であることをOSに伝える必要はなさそうですが、少なくとも動作はします。

14
14
14
2012-10-22 07:59:02 +0000

私は私のCentOS KVMサーバでこの問題を抱えていました、私は “xauth "プログラムを見逃していました。

9
9
9
2014-10-17 08:06:53 +0000

もし、-X arg.または/etc/ssh/ssh_config の中の ForwardX11 だけを実行したときに、after some time でこの問題が発生した場合は、trusted X11 forwarding を有効にするために、$ ssh username@hostname -Y を実行してください。そのため、ローカルクライアントはリモートマシンにコマンドを送信し、グラフィカルな出力を受信します。コマンドがいくつかのセキュリティ設定に違反している場合は、代わりにエラーが表示されます。この最後のオプションはセキュリティ上の問題を引き起こす可能性があります。他のグラフィカルな (X11) クライアントがリモートマシンからデータを盗み見 (スクリーンショットを作ったり、キーロギングをしたり、他の厄介なことをしたり)、それらのデータを変更することさえ可能だからです。

これらのことについてもっと知りたければ、Xsecurity の man ページか X Security 拡張仕様を読むことをお勧めします。さらに、/etc/ssh/ssh_config で ForwardX11 と ForwardX11Trusted オプションをチェックすることができます。

ソース:

6
6
6
2017-08-30 11:36:06 +0000

Mac でテストしましたが、他のシステムでは問題ないかもしれません :

  1. xhost+

$ xhost +

  1. X11 の表示をサポートする環境が必要です

[Mac System] Install X11 for mac https://www.xquartz.org/

  1. 3. ssh サーバに X11 表示を転送させておく必要があります

/etc/ssh/sshd_config を更新して X11Forwarding yes を設定してから ssh サーバを再起動してください

  1. ssh セッションに X11 表示を -X パラメータで転送させておく必要があります

$ ssh -X user@ip

  1. 5. PyCharm で X11 アプリを開くには?
  • X11 表示に対応した ssh セッションを開く(このセッションを忘れないように)
  • その ssh セッションで echo $DISPLAY を実行する
  • PyCharm の環境変数 DISPLAY を設定する
  • PyCharm の環境変数 &007 を設定します。
4
4
4
2017-09-01 01:17:28 +0000

と書いてあったのですが、「yes」にするのではなく、「

X11UseLocalhost no

」と/etc/ssh/sshd_configを入れなければならなかったのですが、「yes」にすると、「yes」になります。デフォルトが “NO "だとおかしい WindowsでXMingでputtyを使っているユーザー。私はFedoraでストレートなsshを使っています。たまに

error can't open display localhost

サーバーの再起動をすれば直るのですが、これがバカバカしい。上記を行い、サーバのサービスsshdを再起動すると、新しい接続が再び正常に動作するようになりました。

4
4
4
2012-07-10 21:26:59 +0000

UXTERMやXTERMを実行しているときは、

export $DISPLAY

を発行するだけで、変数はそこにあります。あとは設定してエクスポートするだけです。

3
3
3
2019-07-08 17:25:35 +0000

この設定は私のために動作します:

ローカル(Windows 10上の64ビットCygwin) DISPLAY=:0

サーバー(Amazon EC2 RHEL 7.6) DISPLAY=:10.0

これらの設定は、タスクバーの “Xアプリケーションメニューを:0 "をクリックして、システムツールを選択することで見つけることができました。

2
2
2
2015-03-18 22:52:32 +0000

私もSolaris 10でこの問題があり、リスナーが設定されていないことがわかりました。

svccfg –s /application/x11/x11-server listprop options/tcp_listen
svccfg –s /application/x11/x11-server setprop options/tcp_listen = true
1
1
1
2017-05-01 04:13:35 +0000

Konsoleを使用している場合は、Xfce Terminalのような別のターミナルエミュレータに切り替えて、rootを使ってもう一度試してみてください。

1
1
1
2014-07-15 15:13:51 +0000

CentOS 6.5では、/etc/hostsをいじった後、突然リモートのX-programsへのアクセスができなくなりました。また、空の $DISPLAY 変数 (手動で設定/エクスポートしても助けになりません) の症状も同じです。

実際のホスト名を指す 127.0.0.0.1 エントリが必要です。

1
1
1
2016-06-10 11:56:04 +0000

私の設定で、x の転送を妨げている素晴らしい問題を発見しました。ファイアウォールがローカルホストからのすべての接続をブロックしていたため、トンネルに到達することができませんでした。

1
1
1
2018-05-30 13:40:40 +0000

ターミナルを開く $ ssh username@hostname -X

$ ssh username@hostname -Y

$ export DISPLAY='IP:0.0'

export DISPLAY=“127.0.0.0.1:10.0” すべてが動作するはずです。