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でテストしただけですが、他のシステムは大丈夫かもしれません
- xhost+
$ xhost +
を使用して、クライアントが任意のホストから接続できるようにします
- X11表示に対応した環境が必要です
[Macシステム] X11 for mac https://www.xquartz.org/
- ssh-server forward x11の表示を
更新
/etc/ssh/sshd_config
と設定X11Forwarding yes
をさせてから、sshサーバを再起動させてください -X
パラメータ$ ssh -X user@ip
でsshセッションの転送x11表示をさせる必要があります
- 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