web-dev-qa-db-ja.com

SSHからXアプリケーションを起動する方法

Googleでこのトピックを検索しようとしましたが、重要な結果はありませんでした。

ターミナルからGUIアプリを起動する必要がありますが、このアプリが私に何を見せているかは気にしません。さらに、異なるセッションでこのアプリケーションのいくつかのインスタンスを起動する必要があります。それはいくつかのGUI自動テストに関連しているので、私は自分が何を望んでいるかを知っており、答えを探しています:)。

適切な手順は次のとおりだと思います:

  1. 新しいXウィンドウセッションの初期化
  2. 新しいセッションIDを取得
  3. env変数にエクスポート(DISPLAY:13.0をエクスポート)
  4. アプリを実行する

しかし、私は最初のステップで立ち往生しています。ここの誰かが同様の問題を抱えていましたか?

---編集:1)GUI出力を気にしません-私のアプリからstdoutとstderrだけが必要です。 -それがこの質問が重複していない理由です-グーグルをよく知っています:)。出力を自分のGUIにリダイレクトしたくありません。

18
Paweł Wojtal

アプリケーションが何をしているのか気にしない場合は、xvfbを備えた「仮想」xサーバーを提供できます。

Xvfbは、ディスプレイハードウェアや物理入力デバイスのないマシンで実行できるXサーバーを提供します。仮想メモリを使用してダムフレームバッファをエミュレートします。このサーバーの主な用途はサーバーのテストでしたが、異常な深さや画面構成に対するクライアントのテスト、バックグラウンドレンダリングエンジンとしてのXvfbによるバッチ処理、負荷テストなど、その他の斬新な用途が見つかりましたXサーバーを新しいプラットフォームに移植し、Xサーバーを実際に必要とせず、いずれにせよXサーバーを必要とするアプリケーションを実行する控えめな方法を提供します。

インストール後、次の方法で起動できます。

Sudo Xvfb :10 -ac -screen 0 1024x768x24 &

バックグラウンドで実行され、次にクライアントを起動します:

DISPLAY=:10 your-client
19
roadmr

短いコマンド:

ssh -X <username>@<Host> gedit &

man sshから

-X      Enables X11 forwarding.
        This can also be specified on a per-Host basis in a configuration file.

        X11 forwarding should be enabled with caution.  Users with the
        ability to bypass file permissions on the remote Host (for the
        user's X authorization database) can access the local X11
        display through the forwarded connection. An attacker may then
        be able to perform activities such as keystroke monitoring.

  1. サーバー側で/etc/ssh/sshd_configを確認します。

    Sudo nano /etc/ssh/sshd_config
    

    以下の行の場合:

    X11Forwarding yes
    X11UseLocalhost no
    

    変更を加えた場合は、ssh sreverを再起動します。

    Sudo service ssh restart
    
  2. クライアント側で/etc/ssh/ssh_configを確認します。

    Sudo nano /etc/ssh/ssh_config
    

    以下の行について

    ForwardX11 yes
    ForwardX11Trusted yes
    
14
A.B.

Sshセッションでexport DISPLAY =:id#を実行するだけで、実行されるプログラムはリモートディスプレイで実行されます。簡単な例:

maythux@maythuxPC:~$ ssh testSSH@myServer
maythux@maythuxPC:~$ export DISPLAY=:0
maythux@maythuxPC:~$ gedit

これで、geditはtestSSH displayという名前のユーザーで実行されます

これをすべて1つのコマンドに短縮できます。

ssh testSSH@myServer "DISPLAY=:0 Nohup gedit"
9
Maythux