SshとvncでLinuxボックスにアクセスできます。 GUIアプリケーションを実行したいのですが、sshから直接、VNCを介してアクセスしてクリックしたくありません。したがって、sshを使用してログインした後、マジックコマンドを発行して、VNCを介してログインすると、GUIアプリが実行されていることを確認します。これどうやってするの?
編集:
Linuxボックスでは、Xサーバーが実行されています。 GUIアプリケーションの再起動を自動化する必要があります。 GUIを使わずにやりたいです。必要なもの:
質問の編集版を読みました。正しく理解できれば、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ウィンドウサーバーにポップアップ表示されます。
それが役に立てば幸い!
X11を(リモートマシンから)ローカルマシンに転送する必要があります。 sshを呼び出すときに、-X
または-Y
フラグを渡します。
アプリがどのディスプレイに表示されるかは、DISPLAY
環境変数によって決まります。行う export DISPLAY=:0.0
リモートマシンの最初のディスプレイに表示されるようにします。
まず、これはプログラミングの質問ではありません(s/b serverfault.com)
ただし、システムでXサーバー(たとえばXMingなど)を実行してから、LinuxボックスでGUIプログラムを実行する必要があります。これにより、GUIがマシンに配置されます。
screen
やtmux
のようなターミナルマルチプレクサを使用してこれを行うのが最も簡単だと思います。 xhost
をいじる必要はありません。承認のコピーと貼り付け、またはそのようなもの。
基本的な考え方:
screen
またはtmux
セッションを開始します。 (これは、VNCでクリックすることを意味しますが、これを行う必要があるのはこれだけです。)screen
またはtmux
セッションに接続できます。GNU画面の例:
リモートマシンの仮想端末(VNC経由または物理的に開かれている):
you@remote:~$ screen -S myscreen
次に、SSHで接続すると、そのセッションに接続できます。
you@remote:~$ screen -x myscreen
次に、画面セッション内から、必要なアプリを実行します。
you@remote:~$ myapp &