アプリケーションをリモートで起動して、GUI をローカルで表示する方法

アプリケーションをリモートで起動して、GUI をローカルで表示する方法

これは初心者の質問だとはわかっていますが、調べてみたところ、イライラしてきました。Lunux の使い方はよくわかっていますが、XServer を扱ったことはありません。

質問1:

OSX から UBUNTU 14.04 デスクトップ マシンにユーザー alpha として SSH 接続します。

ユーザー alpha もそのデスクトップにローカルにログインしています。

UBUNTU マシンに表示されるアプリケーションを (ターミナル経由で) 実行したい (ローカルにログインしたユーザーのローカル ディスプレイに表示されるように)。

今日、OSX ターミナルからこれを実行すると、次のエラーが発生します。

15:21:20:157 AWT-EventQueue-0: Error
java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation     which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
<etc>

注: ローカル ターミナル (UBUNTU 上) から実行すると、正常に動作するので、プログラムに問題はありません。

質問2:

UBUNTU マシンがヘッドレスの場合、ウィンドウを別のマシン (たとえば Mac) に転送するにはどうすればよいでしょうか?

ありがとうピーター

答え1

2 番目の質問については、SSH で接続するときに -X (または信頼できる接続の場合は -Y) パラメータを追加し、Mac に X11 がインストールされていることを確認してください。例:

ssh -X [email protected]

これにより、X11 ウィンドウが Mac 上のローカル X サーバーに表示されるようになります。

見る:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ssh.1.html

最初の質問について:

表示と権限

X プログラムが X ディスプレイに接続するために 2 つの情報が必要です。

  • ディスプレイのアドレスが必要です。これは通常、ローカルでログインしている場合は :0、リモートでログインしている場合は :10、:11 などです (ただし、アクティブな X 接続の数に応じて番号が変わることがあります)。ディスプレイのアドレスは通常、DISPLAY 環境変数で示されます。

  • ディスプレイのパスワードが必要です。X ディスプレイのパスワードはマジック クッキーと呼ばれます。マジック クッキーは直接指定されません。常に X 権限ファイルに保存されます。X 権限ファイルは、「ディスプレイ:42 にはクッキー 123456 があります」という形式のレコードのコレクションです。X 権限ファイルは通常、XAUTHORITY 環境変数で示されます。$XAUTHORITY が設定されていない場合、プログラムは ~/.Xauthority を使用します。

抜粋元: https://unix.stackexchange.com/a/10126

素晴らしい説明についてはその投稿を参照してください。

答え2

リモートでは、DISPLAY 環境変数をエクスポートして、使用するディスプレイを設定する必要があります。

例えば。export DISPLAY=:0

2 番目の質問については、最も簡単な方法は、Ubuntu に VNC サーバーをセットアップし、VNC クライアントを使用して Mac から接続することです。

方法:http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04

答え3

1) よく分かりませんが、試してみるといいかもしれませんexport DISPLAY=0

2) 使用しているマシンで GUI を表示するには、-Yオプションを指定して SSH を実行します。

関連情報