転送せずにサーバーのX11でアプリケーションを実行する[冗長]

転送せずにサーバーのX11でアプリケーションを実行する[冗長]

質問

計算集約的なアプリケーションを使用しています。必要X11が実行されます。リモートサーバーで実行したい(当然X11を実行)。

X11を渡す必要はなく、サーバーで動作するためにのみ必要です。

詳しくは

サーバー上でアプリケーションを実行すると(つまり、コンピューターに物理的に接続されたキーボードを使用している場合)、すべてが正常に機能します。私の問題は、サーバーには常に物理的にアクセスできないため、SSH接続を介してリモートでこのアプリケーションを起動したいということです。

どのように動作するのか分かりませんが、次のコマンドを実行すると奴隷機械(例:キーボードを使用):

$ xhost +

$ DISPLAY=:0 ./run-my-appその後、問題なくSSHを介してアプリケーションを実行できます()。これでSSHを介して実行することはできませんxhost +。とにかくセキュリティの観点から見ると、これは悪い考えのように聞こえます。

実行しないと、xhost +次のような結果が出力されます。

プロトコルが指定されていません。

xauth: (argv):1: ディスプレイ ":0" を開けません。

とにかく、X11でリモートでアプリケーションを実行できないようにするセキュリティ機能(アクセス制御)があるようです。ただし、要点は、サーバー(物理システムに接続されたキーボード)でアプリケーションを起動したときに発生するものよりも多くのことが発生したくないことです。転送せずにリモートで起動/停止するだけです。

これを行う方法はありますか?

エマルジョン

それは似ているようです。サーバーのX11が転送されないそしてLinuxでFirefoxヘッドレスを実行する方法(例:libgtk-x11-2.0.so.0は不要)?ただし、この場合は仮想サーバーを使用できます。wxya、私には動作しません。また、私のサーバーで実行されているXサーバーがあり、それが必須です。

ベストアンサー1

実行中のセッション環境のコピーを盗みます。

pid="`pgrep process_name\$ -U $USER`"
env `tr '\0' ' ' < "/proc/$pid/environ"` program_name

適切な値process_name:X11環境で実行されることがわかっているもの

おすすめ記事