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


13

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

ただし、リモートマシンでsshされsuている間に別のユーザーに移動した場合、Xアプリケーションをローカルマシンに転送できません。と言うwrong authentication

このケースにどのように取り組むべきかわかりません。echo $DISPLAY(初期設定ではまだ正しいssh -Yログオン)が、セッションクッキーは、おそらく唯一のsshでログインして、最初のユーザーのために設定されています。

この困難を克服し、異なるユーザーから実行されている他のXアプリケーションを転送するにはどうすればよいですか?

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

回答:


12

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

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


これを行った後でも、ユーザーの切り替え後にDISPLAY変数を正しく設定する必要があることに注意してください。これは、環境を除外する可能性のある「sudo」を使用する場合に問題になる可能性があります。
クリスアーギン

8
  1. ssh -Y 自分のようにリモートマシンに。
  2. 一度、入力しxauth listます。MAGIC-COOKIEアイテムのリストが表示されます。あなたのログインセッションは、おそらくリストの一番下のものです。(ホスト名とUNIX番号コードを調べて、これをシェル化したホスト名と現在のlocalhost:## DISPLAY環境変数と比較して確認してください。)
  3. ユーザーを切り替えます。
  4. xauth add+上記のMAGIC-COOKIE行全体を入力します。
  5. グラフィックが表示されます。簡単にテストしxlogoます。

2
xauth addに「+」はありません。たとえば、xauth add ubuntu / unix:10 MIT-MAGIC-COOKIE-1 6b49de7c34409d5ac69beab31d12ec94
調整可能

1
USER="otherusername" && MAGIC_COOKIE=`xauth list | tail -n1` && su -c "xauth add $MAGIC_COOKIE" $USER && su - $USER
7yl4r

3

私はランディの答えが好きですが、それは私にとってはうまくいきませんでした。

ここに私が働くようになったものがあります:

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

手順5と6の2つの期間に注意してください。

ランディの答えに従うだけの場合、user2のXAUTHORITY変数はまだuser1の.Xauthorityファイルを指しています。そして、+キーの構文は機能しませんでした。


2

これは答えではないので、見つけた場合は明らかに望ましいです。

そうでない場合、これがあなたの難問の根本原因です:

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

それは私には素晴らしい推論ではないようです。「ボットの対象」WRTが適切に構成されたsshdは、ほとんど関係ありません。彼らはどこでもどこでもポート22の周りで騒ぎますか?どうやらそう。これは、彼らが実際に成功する可能性があるということですか?

ランダムな匿名ボットを正常にsshdに侵入さた人の話をグーグルで探してみてください。どこかで誰かに起こったに違いないと思います(もちろん、あなたは決して知らないかもしれません)が、そのような報告は見つかりません。使用されている構成が何であるかを読むのは興味深いでしょう。

SSHは適切に使用すると非常に安全です。そうでなければ、インターネットコマースは実現不可能です。では、なぜこれらのボットはわずらわしいのでしょうか?「適切に使用される」とは、主に、必須の公開鍵と秘密鍵のペアを意味します。あなたがそれをして、あなたの秘密鍵が安全であると確信しているなら(そしてあなたはそうすべきです)、sshdに自信を持ってください。

すべての「侵入試行」が発生する理由は、U&Lで質問するなどのことをせず、マニュアルページを読んでパスワード保護のみを使用しないユーザーが大勢いるためだと思います。これは、ATMカードをどこかにあるマシンに置いておき、「ゲスアウェイ!」と言うサインを残したようなものです。

ただし、プライベートキーをATMカードのように考えると、物理的にセキュリティで保護された(本質的に)セキュリティで保護されたものと考えると、ターゲットははるかにエーテルになります。これらのボットができることはすべて、はい、2048ビットキーをブルートフォースするには何千年も一緒に作業する数千台のマシンが必要であることを証明することです。

侵入のレポートを読むことにうんざりしている場合は、ポートを変更してください。私はここで人々を「隠蔽によるセキュリティ」としてうんちを見たことがありますが、ポート22で適切に保護されたsshdはポート57ではそれほど安全ではありませんが、ランダムに悩まされることはありません。もちろん、ドローンの敵はすべてIP全体をポートスキャンできますが、それは何ですか?彼らはしません。これは、彼らが探しているのは、見たことがなく/etc/ssh/sshd_config、自分自身の教育も調整もしていないシステムを実行している人だからだと思います。


あなたの言うことすべてに同意します。しかし、私はいつもとてつもなく不安です(あなたが火傷を負った後、多くの状況で彼らがあなたに教えることはそうではありませんか?)。正直なところ、私がログオンしようとしているPCはファイアウォールです(外部からのアクセスはありません)。sshは高いポートにあり、パスワードが難しいですが、「virtualbox」はパブリック名であると感じずにはいられません。誰かがボットコードに組み込むことを選択できるもの。SSHキーは、特にパスワード保護で使用する場合、素晴らしいソリューションです。しかし、それらを使用する場合は、USBで軽量のLinuxディストリビューションを実行する必要があります。
ナス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.