X11 転送を有効にして ssh’ing した後に X プログラムを開いたときに「表示が開けません」というエラーが発生するのを修正するにはどうすればいいですか?

display gtk ssh xorg

Mac(OS X 10.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が動作します。echo $DISPLAY は “localhost:10.0” を返します

自分のVMにsshedしながらexport DISPLAY=localhost:10.0を試して、gedit .bashrcを実行してみましたが、出てきます

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

1つが動作し、他のものが動作しない理由を説明する2つの異なるUbuntuマシンの構成で何が異なる可能性がありますか?

更新:下のコメントのZoredacheさんが示唆してくれたように、sudo apt-get install xbase-clientsを実行しましたが、同じ問題が続いています

  141  Daryl Spitzer  2011-07-13


ベストアンサー

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

X11Forwarding yes

X11Forwarding が指定されていない場合、私がチェックできる Debian マシンではデフォルトは no です

59  DerfK  2011-07-13


xhost+より : リモートサーバ上でGUIを起動中に「表示を開けない」エラーが発生した場合の対処法 xhost+より

答えは以下の通りです。この記事で紹介しているxhostの手順を実行することで、「表示が開けません」というエラーを修正することができます

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

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

$ xhost +

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

X11 転送を有効にします

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

$ ssh username@hostname -X

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

$ ssh username@hostname -Y

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

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

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

$ export DISPLAY='IP:0.0'

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

74  harrymc  2012-02-21


私もMac OS XからUbuntuのVMにログインするときにこの問題が発生したことがあります — 何らかの理由で表示変数の’localhost’が気に入らないようです。そこで、harrymcさんが提案しているように、手動でIPを設定してみてください

export DISPLAY="127.0.0.1:10.0"

ならば、X11のプログラムは問題ないはずです。localhostと127.0.0.1が等価であることをOSに伝える必要はなさそうですが、少なくとも動作はします

23  spinup  2012-06-29


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

14  Joril  2012-10-22


もし、/etc/ssh/ssh_config の -X arg.もしくは ForwardX11 だけで実行しているときに、しばらくしてこの問題が発生した場合は、 $ ssh username@hostname -Y を実行して、信頼された X11 転送を有効にしてください

ここに私がオンラインで見つけたものがあります

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

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

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

sources:

10  Stefan Rogin  2014-10-17


私のMacでテストしただけですが、他のシステムは大丈夫かもしれません

  1. xhost+

    $ xhost +

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

  2. X11表示に対応した環境が必要です

    [Macシステム] X11 for mac https://www.xquartz.org/

  3. ssh-server forward x11の表示を

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

  4. -Xパラメータ

    $ ssh -X user@ip

    でsshセッションの転送x11表示をさせる必要があります

  5. PyCharm で X11 アプリを開くには?
    • X11表示をサポートするsshセッションを開く(このセッションを保持することを忘れないでください)
    • そのsshセッションでecho $DISPLAYを実行する
    • PyCharmの環境変数DISPLAYを設定する

8  Color  2017-08-30


/etc/ssh/sshd_configを入れなければならなかったのですが、以下のようになりました

X11UseLocalhost no

むしろ “yes “に設定します。WindowsでXMingでputtyを使っている人は、デフォルトが “NO “だとおかしい。私はFedoraでストレートなsshを使っています。ときどき、私たちに与え始めることがあります

error can't open display localhost

サーバを再起動すれば通常は解決するのですが、これは馬鹿げています。上記のようにして、サーバ上のサービス sshd を再起動すると、新しい接続が再び正常に動作するようになりました

6  Luigi  2017-09-01


UXTERMやXTERMを実行している場合は、ただ発行してください

export $DISPLAY

変数があるはずです。あとは設定して書き出すだけです

4  Oracle2066  2012-07-10


この設定は私のために機能します

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

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

これらの設定は、タスクバーの “X applications menu on :0 “をクリックして、”System Tools > Terminal “を選択することで見つけることができます

4  qwr  2019-07-08


私も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  2015-03-18


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

$ ssh username@hostname -Y

$ export DISPLAY='IP:0.0'

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

2  Kenny Gichuhi  2018-05-30


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

実際のホスト名を指す 127.0.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  2014-07-15


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

1  Pelle  2016-06-10


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

1  Oliver Dechant  2017-05-01


他にチェックすべきことは、昇格プロンプトにいるか、他のユーザのbashを使っているかどうかです

sudo su を実行して X11 ウィンドウを開こうとしても、元の ssh bash に戻さないとうまくいきません

0  Gabriel Fair  2020-04-15


この問題にはよくぶつかりましたが、ようやく解決しました。以下、チェックリストです

以下の条件をすべて満たしていることを確認してください

  • X11Forwarding yes/etc/ssh/sshd_configにチェックを入れる)

  • ssh -Y username@remoteserver.de(重要: -Y)

宛先サーバに到達するために複数のホップを行わなければならない場合は、すべての ssh 接続で ssh -Y ... を使用するようにしてください。これが私が display で失敗した理由の一つで、単に接続の一つで ssh username@remote_host.de を使ったからです

0  kmario23  2020-06-10