web-dev-qa-db-ja.com

sshシェルからGUIアプリを実行する方法は?

SshとvncでLinuxボックスにアクセスできます。 GUIアプリケーションを実行したいのですが、sshから直接、VNCを介してアクセスしてクリックしたくありません。したがって、sshを使用してログインした後、マジックコマンドを発行して、VNCを介してログインすると、GUIアプリが実行されていることを確認します。これどうやってするの?

編集:

Linuxボックスでは、Xサーバーが実行されています。 GUIアプリケーションの再起動を自動化する必要があります。 GUIを使わずにやりたいです。必要なもの:

  1. サーバーのsshからログインします
  2. sERVERで実行されているXサーバーにバインドするように強制してGUIアプリを実行します
  3. ???
  4. 利益!
7
karramba

質問の編集版を読みました。正しく理解できれば、GUIを表示せずにSSHからプログラムを実行したい...プログラムを実行したいだけで、X Windowsに依存しているので、サーバー自体のXWindowsに何らかの方法で接続するために必要です。

あなたがしなければならないことが2つあります。 X Windowsの外部からの接続を許可する必要があります。次に、どのXサーバーにバインドするかをシェルに(SSHで)指示する必要があります。

まず、Xサーバーへの着信接続を許可します。サーバーマシンのXWindowsでターミナルウィンドウを開きます。 (アクセスできる必要があります。アクセスできない場合は、アクセスできません。)

次のコマンドを発行します。

xhost +

「すべてのホストから許可された接続」またはその効果を示す何かが表示されます。

次に、X Windowsのままで、次の問題を発行します。

echo $DISPLAY

これにより、ディスプレイIDがわかります。それを書き留めるか、覚えておいてください。通常は「:0」または「:0.0」になりますが、異なっていても心配する必要はありません。

XWindows自体から行う必要があるのはこれだけです。

次に、どこからでもサーバーにSSHで接続します。次のコマンドを発行します。

export DISPLAY=[what-the-echo-command-gave-you]

そしてそれはそれであるはずです!これで、そのSSHシェルから任意のXウィンドウを実行できるようになり、ローカルのXウィンドウサーバーにポップアップ表示されます。

それが役に立てば幸い!

6
Teekin

X11を(リモートマシンから)ローカルマシンに転送する必要があります。 sshを呼び出すときに、-Xまたは-Yフラグを渡します。

5
mipadi

アプリがどのディスプレイに表示されるかは、DISPLAY環境変数によって決まります。行う export DISPLAY=:0.0リモートマシンの最初のディスプレイに表示されるようにします。

4
Daenyth

まず、これはプログラミングの質問ではありません(s/b serverfault.com)

ただし、システムでXサーバー(たとえばXMingなど)を実行してから、LinuxボックスでGUIプログラムを実行する必要があります。これにより、GUIがマシンに配置されます。

0
KevinDTimm

参考までに、 WinSSHD および/または Tunnelier を使用して、UNIXプロセスの起動など、Windowsの領域でこのようなことを行うことができます。

ローカルXウィンドウセッションでGUIを起動する場合は、DISPLAY変数をローカルに設定する必要があり(Tunnelierにその設定がある場合があります)、WindowsではXウィンドウエミュレーターの実行と組み合わせる必要がありますWindows上( cygwin-X など)

0
djangofan

screentmuxのようなターミナルマルチプレクサを使用してこれを行うのが最も簡単だと思います。 xhostをいじる必要はありません。承認のコピーと貼り付け、またはそのようなもの。

基本的な考え方:

  1. リモートマシンで、仮想X端末を開きます。その仮想端末で、screenまたはtmuxセッションを開始します。 (これは、VNCでクリックすることを意味しますが、これを行う必要があるのはこれだけです。)
  2. これで、リモートマシンにSSHで接続するときはいつでも、このscreenまたはtmuxセッションに接続できます。
  3. 接続すると、任意のGUIアプリを実行でき、そこから実行したかのようにリモートマシンにポップアップ表示されます。

GNU画面の例:

リモートマシンの仮想端末(VNC経由または物理的に開かれている):

you@remote:~$ screen -S myscreen

次に、SSHで接続すると、そのセッションに接続できます。

you@remote:~$ screen -x myscreen

次に、画面セッション内から、必要なアプリを実行します。

you@remote:~$ myapp &
0
Statisfactions