web-dev-qa-db-ja.com

ssh -Yを実行してからsu-<別のユーザー>を実行してXアプリケーションをローカルマシンに転送する方法

リモートで実行しているLinuxアプリケーションを「フェッチ」する(つまり、ローカルで描画する)のは簡単です。リモートマシンにssh -Yを入力してアプリケーションを実行すると、そのアプリケーションはローカルデスクトップに十分ポップアップします。

ただし、リモートマシンでsshを実行しているときに、別のユーザーにsuを実行すると、Xアプリケーションをローカルマシンに転送できません。 wrong authenticationと表示されています。

私はこの事件にどう対処するかわかりません。 echo $DISPLAYはまだ正しいですが(最初のssh -Yログオンによって設定されます)、セッションCookieはおそらくsshにログオンした最初のユーザーに対してのみ設定されます。

この問題を解決し、さまざまなユーザーから実行されている他のXアプリケーションを転送するにはどうすればよいですか?

私が直接sshを実行していない理由は、そのユーザーがsshを介してアクセスできないようにするためです(これは、「virtualbox」ユーザーであり、ボットがそのサーバーにsshしようとするのは明らかに簡単です)。

13
nass

X11転送を有効にしてssh経由で削除マシンに接続すると、サーバーのsshがユーザーのホームディレクトリに.Xauthorityファイルを作成します。 sshはTCPソケットでX11をリッスンするため、誰でも接続できます。誰でも接続できるため、誰もがディスプレイを使用できないようにする方法が必要です。これは、.Xauthorityファイルで行います。ファイルには、クライアントが接続を許可されていることを確認するX11サーバーに提示される「Cookie」が含まれています。

すべての詳細をスキップして、その.Xauthorityファイルをターゲットユーザーのホームディレクトリにコピーして(所有権を付与すると)、接続できるはずです。

12
Patrick
  1. ssh -Yを自分のリモートマシンに追加します。
  2. そこに入力したら、xauth list。 MAGIC-COOKIEの商品一覧が表示されます。ログインセッションがリストの一番下にある可能性があります。 (これを確認するには、ホスト名とUNIX番号コードを確認し、シェル化したホスト名と現在のlocalhost:## DISPLAY環境変数と比較します。)
  3. ユーザーを切り替えます。
  4. タイプxauth add +上からのMAGIC-COOKIE行全体。
  5. グラフィックが表示されます。クイックxlogoでテストします。
8
Randy