リモートで実行しているLinuxアプリケーションを「フェッチ」する(つまり、ローカルで描画する)のは簡単です。リモートマシンにssh -Y
を入力してアプリケーションを実行すると、そのアプリケーションはローカルデスクトップに十分ポップアップします。
ただし、リモートマシンでsshを実行しているときに、別のユーザーにsu
を実行すると、Xアプリケーションをローカルマシンに転送できません。 wrong authentication
と表示されています。
私はこの事件にどう対処するかわかりません。 echo $DISPLAY
はまだ正しいですが(最初のssh -Y
ログオンによって設定されます)、セッションCookieはおそらくsshにログオンした最初のユーザーに対してのみ設定されます。
この問題を解決し、さまざまなユーザーから実行されている他のXアプリケーションを転送するにはどうすればよいですか?
私が直接sshを実行していない理由は、そのユーザーがsshを介してアクセスできないようにするためです(これは、「virtualbox」ユーザーであり、ボットがそのサーバーにsshしようとするのは明らかに簡単です)。
X11転送を有効にしてssh経由で削除マシンに接続すると、サーバーのsshがユーザーのホームディレクトリに.Xauthority
ファイルを作成します。 sshはTCPソケットでX11をリッスンするため、誰でも接続できます。誰でも接続できるため、誰もがディスプレイを使用できないようにする方法が必要です。これは、.Xauthority
ファイルで行います。ファイルには、クライアントが接続を許可されていることを確認するX11サーバーに提示される「Cookie」が含まれています。
すべての詳細をスキップして、その.Xauthority
ファイルをターゲットユーザーのホームディレクトリにコピーして(所有権を付与すると)、接続できるはずです。
ssh -Y
を自分のリモートマシンに追加します。xauth list
。 MAGIC-COOKIEの商品一覧が表示されます。ログインセッションがリストの一番下にある可能性があります。 (これを確認するには、ホスト名とUNIX番号コードを確認し、シェル化したホスト名と現在のlocalhost:## DISPLAY環境変数と比較します。)xauth add
+上からのMAGIC-COOKIE行全体。xlogo
でテストします。