私の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
を実行しましたが、引き続き持っています同じ問題。
サーバのsshd_config(通常は/etc/ssh/sshd_config
)を確認し、X11Forwardingオプションが次の行で有効になっていることを確認してください。
X11Forwarding yes
X11Forwardingが指定されていない場合、私が確認したDebianマシンではデフォルトはnoです。
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です。
私はMac OS XからUbuntu VMにログインするときにもこの問題を抱えていました - 何らかの理由でdisplay変数の 'localhost'が気に入らないようです。そのため、harrymcが示唆するように、手動でIPを設定します。
export DISPLAY="127.0.0.1:10.0"
それならX11プログラムは問題ないはずです。 localhostと127.0.0.1が同等であることをOSに伝える必要があるようには思われませんが、少なくともうまくいきます。
私は私のCentOS KVMサーバーでこの問題を抱えていました、私は "xauth"プログラムを逃していました。
もしあなたがこの問題を抱えているのなら しばらくしてから -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のオプションを確認できます。
出典:
私のMacでテストしたばかりで、他のシステムでも大丈夫かもしれません:
$ xhost +
[Macシステム] Mac用X11をインストールする https://www.xquartz.org/
/etc/ssh/sshd_config
を更新してX11Forwarding yes
を設定してから、sshサーバーを再起動してください。
-X
パラメータで表示させるべきです。$ ssh -X user @ ip
- x11ディスプレイをサポートするSSHセッションを開く(このセッションを忘れずに)
- そのsshセッションで
echo $DISPLAY
を実行する- あなたのPyCharmに
DISPLAY
環境変数を設定する
UXTERMまたはXTERMを実行しているときだけ発行してください
export $DISPLAY
変数はそこにあります。それを設定してエクスポートするだけです。
私は/etc/ssh/sshd_config
に以下を入れなければなりませんでした:
X11UseLocalhost no
それどころか、それを "yes"に設定してください。デフォルトが「いいえ」の場合、Windows上でXMingでPuTTYを使用しているユーザー。私はFedora上でストレートsshを使います。時折それは私たちを与え始めるでしょう
error can't open display localhost
サーバーを再起動すると通常は修正されますが、これは愚かです。上記を行って、サーバー上でサービスsshd
を再起動し、新しい接続が再び正常に動作するようにします。
私はSolaris 10でもこの問題を抱えていて、リスナーがセットアップされていないことを知りました。
svccfg –s /application/x11/x11-server listprop options/tcp_listen
svccfg –s /application/x11/x11-server setprop options/tcp_listen = true
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もまたオンラインに戻ります。
ターミナル$ ssh username @ hostname -Xを開きます。
$ ssh username@hostname -Y
$ export DISPLAY='IP:0.0'
export DISPLAY = "127.0.0.1:10.0"すべてうまくいくはずです。
Konsoleを使用している場合は、Xfce Terminalなどの別のターミナルエミュレータに切り替えて、rootを使用してください。
私はx転送を妨げていた私の設定にNice hiccupを見つけました。
このセットアップは私のために機能します:
ローカル(Windows 10上の64ビットCygwin)DISPLAY=:0
サーバー(Amazon EC2 RHEL 7.6)DISPLAY=:10.0
これらの設定は、タスクバーの「X applications menu on:0」をクリックし、System Tools> Terminalを選択することで見つかりました
多くのフラストレーションの後、私は彼の/ etc/Hostファイルのサーバーのホスト名のエントリが正しくないことを知りました。