ssh -Y後su -する方法それでもXアプリケーションをローカルコンピュータに渡します。

ssh -Y後su -する方法それでもXアプリケーションをローカルコンピュータに渡します。

リモートで実行されているLinuxアプリケーションを「インポート」(つまり、ローカルに描画)するのは非常に簡単です。ssh -Yリモートシステムに移動してアプリケーションを実行すると、そのアプリケーションはローカルデスクトップに確実に表示されます。

ただし、suリモートコンピュータの他のユーザーにSSH経由で接続すると、Xアプリケーションをローカルコンピュータに渡すことはできません。それは言うwrong authentication

このイベントをどのように処理するのかわかりません。これはまだecho $DISPLAY本当ですが(ssh -Y初期ログインによって設定されます)、セッションCookieはsshにログインしている初期ユーザーに対してのみ設定できます。

この問題をどのように克服し、他のユーザーが実行している他のXアプリケーションに渡すことができますか?

私が直接sshを使用しない理由は、そのユーザーにsshを送信したくないからです(サーバーでsshを試みるボットの簡単なターゲットである「virtualbox」ユーザーです)...

答え1

X11転送が有効になっている削除済みシステムにsshを接続すると、サーバーのsshはユーザー.Xauthorityのホームディレクトリにファイルを作成します。 sshはTCPソケットからX11を受信するので、誰でも接続できます。誰でも接続できるため、他の人がモニターを使用できないようにする方法が必要です。このファイルを使用して行われます.Xauthority。このファイルには、クライアントの接続が許可されていることを確認するためにX11サーバーに提供される「cookie」が含まれています。

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

答え2

  1. ssh -Yリモートコンピュータに自分のように接続します。
  2. を入力すると、xauth listMAGIC-COOKIEエントリのリストが表示されます。あなたのログインセッションはリストの一番下にある可能性があります。 (ホスト名とUNIX番号コードを見て、解凍したホスト名と現在のlocalhost:##DISPLAY env変数と比較してこれを確認してください。)
  3. ユーザーを切り替えます。
  4. +上記でxauth addMAGIC-COOKIE行全体を入力してください。
  5. これでグラフが表示されます。 Quickを使ってテストしますxlogo

答え3

私はRandyの答えが好きですが、私にはあまり効果がありません。

これが私がやろうとしていることです。

  1. ssh -Y as user1
  2. xauth list | grep `uname -n`
  3. ユーザー2に切り替える
  4. unset XAUTHORITY
  5. xauth generate :0 .
  6. xauth add :0 . <KEY-FROM-STEP-2>

ステップ5と6で2つの期間を記録してください。

Randyの答えによれば、user2のXAUTHORITY変数はまだuser1のファイルを指します.Xauthority。 +key 構文が機能しません。

答え4

これは非常に役に立ちましたが、次のように$ DISPLAYをエクスポートする必要がありました。

最初のユーザーとして

# $xauth list $DISPLAY
<<<<<<<<FULL COOKIE TEXT>>>>>>>>>>>
# echo $DISPLAY
    <localhost:11.0>

2番目のユーザーとして

# xauth add <<<<<<<<FULL COOKIE TEXT>>>>>>>>>>>
# export DISPLAY=<localhost:11.0>

注:私のシステムはRed Hat 7です。

関連情報