web-dev-qa-db-ja.com

X11転送を有効にしてSSHを実行した後にXプログラムを開いたときに「ディスプレイを開けない」エラーを修正するにはどうすればよいですか?

私のMac(OS X 10.6.8)でX11アプリケーション(XQuartz 2.3.6、xorg-server 1.4.2-Apple56)を起動し、X11で端末を開いてxhost +を実行した後、ssh -Yを私のUbuntu 10.04 VM(VMware Fusionで実行中)。 (例えば)gedit .bashrcを実行すると、次のようになります。

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

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

しかし、私が自分のUbuntu 11.04マシンにssh -Yを入力した場合、gedit .bashrcは機能します。 echo $DISPLAYは "localhost:10.0"を返します。

VMに接続してexport DISPLAY=localhost:10.0を実行しながらgedit .bashrcを試しましたが、次のようになりました。

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

2つの違いのあるUbuntuマシンの構成において、どちらがうまくいくのか、もう片方がうまくいかないのかを説明するのに何が違うのでしょうか。

更新:以下のコメントの Zoredache で示唆されているように、私はSudo apt-get install xbase-clientsを実行しましたが、引き続き持っています同じ問題。

100
Daryl Spitzer

サーバのsshd_config(通常は/etc/ssh/sshd_config)を確認し、X11Forwardingオプションが次の行で有効になっていることを確認してください。

X11Forwarding yes

X11Forwardingが指定されていない場合、私が確認したDebianマシンではデフォルトはnoです。

40
DerfK

From xhost +:リモートサーバーでGUIを起動しているときに「ディスプレイを開けない」エラーを修正する方法

回答:この記事に記載されているxhostの手順に従って、「ディスプレイを開けない」エラーを修正できます。

クライアントがxhost +を使用して任意のホストから接続できるようにします。

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

$ xhost +

アクセス制御が無効で、クライアントはどのホストからも接続できます

X11転送を有効にします

Sshを実行している間は、-11オプションを使用してX11転送を有効にしてください。

$ ssh username@hostname -X

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

$ ssh username@hostname -Y

そのホストでGUIアプリケーションを開く

上記で説明したようにリモートホストへのSSH接続を開いた後は、問題なく開くことができるGUIアプリケーションを開くことができます。

それでも「ディスプレイを開けない」エラーが発生する場合は、DISPLAY変数を以下のように設定してください。

$ export DISPLAY='IP:0.0'

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

54
harrymc

私はMac OS XからUbuntu VMにログインするときにもこの問題を抱えていました - 何らかの理由でdisplay変数の 'localhost'が気に入らないようです。そのため、harrymcが示唆するように、手動でIPを設定します。

export DISPLAY="127.0.0.1:10.0"

それならX11プログラムは問題ないはずです。 localhostと127.0.0.1が同等であることをOSに伝える必要があるようには思われませんが、少なくともうまくいきます。

17
spinup

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

13
Joril

もしあなたがこの問題を抱えているのなら しばらくしてから -X argをつけて走らせた時。または/ etc/ssh/ssh_config内のForwardX11、そして$ ssh username@hostname -Yを実行して 信頼できるX11転送を有効にする 、正確な原因はわかりませんが、-Xで一部の機能はしばらくすると期限切れになると考えられます。 。

これが私がオンラインで見つけたものです:

Ssh -X remotemachineを使用すると、リモートマシンは信頼できないクライアントとして扱われます。そのため、ローカルクライアントはリモートマシンにコマンドを送信し、グラフィック出力を受け取ります。あなたのコマンドがいくつかのセキュリティ設定に違反しているなら、あなたは代わりにエラーを受け取るでしょう。

しかし、ssh -Y remotemachineを使用すると、リモートマシンは信頼できるクライアントとして扱われます。この最後の選択肢はセキュリティ問題を引き起こす可能性があります。他のグラフィカル(X11)クライアントはリモートマシンからデータを盗み出し(スクリーンショットを作成したり、キーロギングやその他の厄介なことをしたりする)、そのデータを変更することすら可能です。

これらについてもっと知りたいのなら、XsecurityのマンページかX Security拡張仕様を読むことをお勧めします。さらに、/ etc/ssh/ssh_configでForwardX11とForwardX11Trustedのオプションを確認できます。

出典:

9
Stefan Rogin

私のMacでテストしたばかりで、他のシステムでも大丈夫かもしれません

  1. クライアントがxhost + を使用して任意のホストから接続できるようにします。

    $ xhost +

  2. X11ディスプレイをサポートする環境があるはずです。

    [Macシステム] Mac用X11をインストールする https://www.xquartz.org/

  3. あなたはあなたのssh-server forward x11 display に任せるべきです。

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

  4. あなたのsshセッションにx11ディスプレイを-Xパラメータで表示させるべきです。

    $ ssh -X user @ ip

  5. PyCharmでX11アプリを起動する方法は?
    • x11ディスプレイをサポートするSSHセッションを開く(このセッションを忘れずに)
    • そのsshセッションでecho $DISPLAYを実行する
    • あなたのPyCharmにDISPLAY環境変数を設定する
5
Color

UXTERMまたはXTERMを実行しているときだけ発行してください

export $DISPLAY 

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

4
Oracle2066

私は/etc/ssh/sshd_configに以下を入れなければなりませんでした:

X11UseLocalhost no

それどころか、それを "yes"に設定してください。デフォルトが「いいえ」の場合、Windows上でXMingでPuTTYを使用しているユーザー。私はFedora上でストレートsshを使います。時折それは私たちを与え始めるでしょう

error can't open display localhost

サーバーを再起動すると通常は修正されますが、これは愚かです。上記を行って、サーバー上でサービスsshdを再起動し、新しい接続が再び正常に動作するようにします。

2
Luigi

私はSolaris 10でもこの問題を抱えていて、リスナーがセットアップされていないことを知りました。

svccfg –s /application/x11/x11-server listprop options/tcp_listen
svccfg –s /application/x11/x11-server setprop  options/tcp_listen = true
2
Doug Somers

CentOS 6.5では、/ etc/hostsで混乱した後、突然リモートXプログラムへのアクセスを失いました。空の$ DISPLAY変数と同じ症状(手動で設定/エクスポートするのに役立ちません)。

実際のホスト名を指す127.0.0.1エントリが必要です。実際、順番も関連性があるようです(最後に置くとうまくいきません...)

[root@poseidon /etc]$ cat hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6
127.0.0.1 poseidon.mycampus.edu poseidon
1XX.XXX.XXX.208 poseidon.mycampus.edu poseidon

これを修正した後、xeyes、xclockと他のXテスト玩具は再び働いています、従って私の必要なvirt-managerもまたオンラインに戻ります。

1
David Ramirez

ターミナル$ ssh username @ hostname -Xを開きます。

$ ssh username@hostname -Y

$ export DISPLAY='IP:0.0'

export DISPLAY = "127.0.0.1:10.0"すべてうまくいくはずです。

1
Kenny Gichuhi

Konsoleを使用している場合は、Xfce Terminalなどの別のターミナルエミュレータに切り替えて、rootを使用してください。

1
Oliver

私はx転送を妨げていた私の設定にNice hiccupを見つけました。

1
Pelle

このセットアップは私のために機能します:

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

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

これらの設定は、タスクバーの「X applications menu on:0」をクリックし、System Tools> Terminalを選択することで見つかりました

0
qwr

多くのフラストレーションの後、私は彼の/ etc/Hostファイルのサーバーのホスト名のエントリが正しくないことを知りました。

0
iceburn_pt