Ubuntu 12.04 Serverを実行しているAmazon EC2インスタンスに接続されているWindows上のSSHターミナルからgedit
を実行しようとしていますが、このエラーが表示されます。
Cannot open display:
どうすれば修正できますか?
サイドでWindowsを使用しているため、WindowsでローカルXサーバーを実行するSSHクライアントが必要です。これにより、画面上のサーバーからグラフィカルアプリケーションをリモートで実行できます。
経験から、この機能が組み込まれている無料の MobaXTerm をお勧めします。ダウンロードして試してください:
エラーが発生した場合、最小限のサーバーイメージがallowX-forwardingに設定されていないことがあるためです。その場合は、コメントしてください。解決のお手伝いをいたします。 Ubuntu/Debianを実行する多くの最小限のVPSでこれを実行しました。
だからあなたはあなたの家のPCから(それを呼び出しましょうあなたのマシン)サーバーに(それを呼び出しましょうサーバー)viassh?マシン経由でサーバー上のグラフィカルウィンドウでプログラムを起動したいですか?それが正しい場合は、必ず読んでください。
プログラムを呼び出してgedit
を開始しますが、プロセスはすべて同じです。グラフィカルウィンドウを表示する場所に応じて、右の見出しにスキップします。
リモートマシンでgeditのウィンドウを表示して使用したいが、サーバーで起動したい場合、シェルセッションは次のようになります。
user@remote-machine:~$ ssh -X user@server
Last login: Tue Aug 14 13:47:04 2012 from clientXX
*******************************************************************************
M O T D (Message Of The Day)
*******************************************************************************
user@server:~$ gedit .bash_aliases
** (gedit:7851): WARNING **: Could not load theme icon gtk-home: Icon 'gtk-home' not present in theme
(gedit:7851): Gtk-WARNING **: Attempting to store changes
警告を気にしないでください、それらは正常です-geditウィンドウは、サーバー上で表示されるようにリモートマシンの画面にポップアップ表示されます。トリックは、X-トンネリングを有効にし、DISPLAY
変数を右に設定するssh -X
のように「-X」オプションを使用することです。
これは、X11をサポートするSSHクライアントを使用しており、サーバーでXサーバーが実行されていることを前提としています(GUIを必要としない一部はXサーバーを実行しません)。特にWindowsでは、ほとんどのWindowsターミナルプログラムにはXがないため、これは問題になる可能性があります。 izx が述べているように、 MobaXTerm はWindows用の多くのSSHクライアントの1つです。ただし、X-Server。
ただし、X11がないサーバーの場合は、インストールする必要があります。
次のようにgeditを呼び出して、サーバーの画面でインスタンスを開始することもできます。
ssh user@server
DISPLAY=:0.0 gedit
:0.0
の代わりに正しい値に置き換える必要がありますが、適切なX-screenで取得するには(サーバーに複数の画面が接続されている場合、またはその構成がやや特殊な場合のみ重要です)。
ここで動作しない最も一般的なシナリオは、サーバーにX11-Serverがなく、モニターが接続されていないか、グラフィカルユーザーインターフェイスがなく、これを読んでいない場合です:D。
私はこれに関する専門家ではありませんが、それが機能する方法は、各物理画面、つまり個々のコンピューターに接続された各モニターが、0.0
、1.0
、 2.0
、...
この番号は、X-Window-System(別名X11)によって割り当てられます。これは、Unity、Gnome、KDEなどが構築できるネットワークと基本的なグラフィカルインターフェイスを提供するレイヤーです。
対象のマシンでfor x in /tmp/.X11-unix/X*; do echo ":${x##*X}"; done
を実行すると、特定のマシンのディスプレイ数と使用中の数字を確認できます。*その後、画面を使用可能にするように構成され、Xサーバーを実行する各コンピューターにはホスト名があります。 DISPLAY
変数をDISPLAY=hostname:0.0
に応じて設定することにより、同じネットワーク内の任意のマシンからホスト画面を使用できます。 -X
オプションを指定すると、Sshは賢明な方法でこれを行います。
*注意:このforループよりも良い方法があると思います。
シェルテキストエディターを使用します。 vi
、vim
、nano
、およびemacs
が最も一般的であり、少なくとも1つがインストールされて動作します。それらのうちnano
は最も簡単で最も自明です。
基本的に、SSHを介した端末があり、GeditはGUIプログラムです。 con-f-useの答えは、Linux GUIクライアントセッションから動作するようにします。
他のオプションは、nano、Vi、またはその他多数の非GUIエディターを使用することです。