web-dev-qa-db-ja.com

sshを介してアプリケーションを起動する

SSHは初めてです。リモートコンピューターに接続できます。リモートコンピューターでアプリケーションを起動し、画面にそのGUIを表示することもできます。

しかし、画面に出力を生成せずにアプリケーションを起動する方法はわかりません。

アプリケーション(たとえばrhythmbox)を起動し、ssh接続を閉じて、画面に出力を送信せずに、アプリケーションを実行したままにします。

Webの閲覧いくつかのアドバイスを見つけましたが、何の助けにもなりませんでした。

ssh -X name@domain
Nohup rhythmbox &
logout
5
0xDE4E15B

Rhythmboxをリモートコンピューターの画面に表示したいですか? GUIアプリケーションが表示される画面は、DISPLAY環境変数によって示されます。 ssh -Xを実行すると、DISPLAYは、表示要求をSSH接続経由で転送する必要があることを示す値に設定されます。アプリケーションをリモートコンピューターの画面に表示するには、DISPLAYを値:0に設定します。

ssh [email protected] 'DISPLAY=:0 rhythmbox &'

もう1つのハードルがあります。アプリケーションがXディスプレイに接続するとき、Cookieと呼ばれる一種のパスワードを提供する必要があります。 Cookieは、Xサーバーが起動するたびに生成されます。 Ubuntuは、ランダムに生成された名前のファイルにCookieを保存します。 Cookieを見つける最も簡単な方法は、Xサーバーの起動時に既知のファイル名で保存することです。 Ubuntuでは、次のコードを~/.profileに追加します。

case $DISPLAY:$XAUTHORITY in
  :*:?*)
    # DISPLAY is set and points to a local display, and XAUTHORITY is
    # set, so merge the contents of `$XAUTHORITY` into ~/.Xauthority.
    XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac

詳細については、 ssh DISPLAY変数 を参照してください。


または、Rhythmboxウィンドウを表示したくないということですか?その場合、仮想Xサーバーに接続するようにします xvfbInstall xvfb 。仮想Xサーバーを起動し、Rhythmboxに接続するように指示します。

ssh [email protected] 'Xvfb :1 -screen 0 800x600x8 & sleep 1; DISPLAY=:1 rhythmbox &'
3
Gilles