web-dev-qa-db-ja.com

-Xでsshを実行すると、「警告:信頼できないX11転送設定が失敗しました:xauthキーデータが生成されません」とはどういう意味ですか?

Mac(OS X 10.6.7を実行)でssh -Xを使用してUbuntu(11.04)ボックスに接続すると、次の警告が表示されます。

警告:信頼できないX11転送のセットアップに失敗しました:xauthキーデータが生成されていません警告:xauthデータがありません。 X11転送に偽の認証データを使用する。

この警告を消すために何かできることはありますか?そうでない場合、無視しても安全ですか?

X11転送は正常に機能しているようですが、次のメッセージが表示されます。

Xlib:ディスプレイ「localhost:10.0」に拡張「RANDR」がありません。

それは警告に関連していますか? (私は推測していません。そうでない場合は、それについて新しい質問を提出します。)

147
Daryl Spitzer

-Xフラグの代わりに-Yフラグを使用したくない理由がありますか?

簡単に言うと、-Xと-Yの違いは、-Yが信頼できるX11転送を有効にすることです。

157
user5336

2015年にここに来る場合:他のすべてが適切に設定されている場合でも、ssh -Xを使用してXQuartzバージョン<= 2.7.7を実行している場合、これはMac OS X 10.10 Yosemiteでも発生する可能性があります。根本的な原因は、Xauth検索パスの外でX11ディスプレイソケットが書き込まれることです:XQuartzトラッカーの問題 #2068

編集:修正されたXQuartzが新しいホームページ xquartz.org でリリースされており、そこから最新バージョン(現在2.7.9)をインストールすると問題を回避できます。

25
Will Angley

-Yを使用しても同じメッセージが表示される場合は、xauthプログラムがサーバーにない可能性があります。 Debianのようなシステムでは、xauthパッケージが必要です。 RedHatのようなシステムでは、xorg-x11-xauthパッケージが必要です。

18
Flup

このコンテキストで「信頼されていない」とは、接続を信頼していないことを意味します。 SSHはX11転送をより安全にするために追加のセキュリティ対策を使用します。 「信頼されている」とは、リモートホスト上の何もXauthデータにアクセスできず、それを使用して、たとえばキーストロークを監視することに完全に自信があることを意味します。

この用語は実際に何年もの間私を混乱させました。 「信頼できる」接続の方が安全だと思いました。しかし、実際には、接続がIS信頼できるものであり、余分なセキュリティ対策を邪魔することなく何かを実行したい場合に使用するはずのオプションです。 "信頼できない"は、信頼できないリモートホストを処理する方が(ある程度)安全です。

「信頼できない」接続は、X11セキュリティ拡張機能を利用し、(おそらく)不要な他の拡張機能を無効にすることで、ブラックハットがあなたにできることを制限しようとします。これが、RandRが-Xで無効にされている理由です。リモートホストからXディスプレイを回転できるようにする必要がありますか?

また、「信頼できない」X11転送は、誤ってオンにしないように、一定の時間が経過するとオフになることにも注意してください。その後、ウィンドウを開く新しい試みは失敗します。何が起こっているのかを理解するのに十分なドキュメントを読む前に、それは何度か私を噛みました.

16
tetsujin

[〜#〜]注意[〜#〜](セキュリティ上の欠陥につながる不完全な回答を読むことに疲れる)

  1. ssh -Yを使用するということは、ここに偽のxauth情報があることを意味します!

  2. xQuartzは、有効にするとxauthを使用するため、ssh -Xが機能するはずです。唯一の問題は、sshが/ usr/X11R6/binでxauthを探し、XQuartzを使用するmacosでは/ opt/X11/binにあることです。

安全な解決:

  1. 認証された接続を有効にする設定(Cmd-、)のSecurityタブで最初のオプションを有効にします

  2. 以下を$HOME/.ssh/configに追加します

    XAuthLocation /opt/X11/bin/xauth

  3. ssh -X you_serverは安全な方法で機能します

12
Koko

サーバー側の問題を除外する

まず、サーバー側の問題を除外する必要があります。他のホストからssh -Xを正常に実行できますか? ssh -Yは機能しますが、ssh -Xは機能しませんか?どちらの場合も、サーバーでssh + X11が正しく設定されていると想定し、次のセクションに進みます。

それを確認する立場にない場合(たとえば、X11を実行している1台のラップトップしか持っていない場合)、偽のセッションを使用してサーバーからsshを実行できます。

  1. export DISPLAY=:44#(ボーンシェル)または
    setenv DISPLAY :44#(csh/tcsh)
  2. xauth add $DISPLAY MIT-MAGIC-COOKIE-1 1234#このテスト専用の偽のCookie
  3. ssh -X localhost env |grep DISPLAY

期待される結果:ssh-to-selfセッションのリモートエンドにDISPLAY変数が設定されているはずです。結果が得られない場合は、サーバーが正しく構成されていない可能性があります(X11ライブラリーやxauthコマンドが欠落している、またはsshd構成がX11アクセスを拒否するように設定されている可能性があります)。

Macの場合:Xquartzが最新であることを確認します

Will Angley's answer のとおり

ssh -vv -Xの出力を確認する

引用するエラーメッセージは、多くの原因が考えられる症状です。 ssh -X -vv remotehostを使用してもう一度お試しください。X11トンネルのセットアップが失敗した理由についての手掛かりが得られます。

次のメッセージが表示されますか?

debug1:xauthプログラムなし。
  1. クライアントシステムのxauthコマンドが存在する場所に注意してください:
    どのxauth
  2. 〜/ .ssh/configの最後に次の行を追加します(そして、今後もそこに保持するように通知するコメントを追加します):
    ホスト* 
     XAuthLocation /opt/X11/bin/xauth
    
    ステップ1の結果に従ってこのパスを調整します— Jan-Willem Arnoldへのクレジット
9
DomQ

私はこの動作を示すことができる設定を持っていないので、これは暗闇の中でのショットです:

この警告を発するホストのForwardX11Trusted"no"に設定すると、警告が抑制される場合があります。これは~/.ssh/configまたは/etc/ssh/ssh_configのいずれかに配置でき、上の行にHost <hostname>を含めることにより、特定のホストに固有のオプションを作成できます。 <hostname>コンポーネントは、コマンドラインで入力したもの(解決されたホスト名ではない)と一致し、ワイルドカードを含めることができます。

9
Michael Lowman

xauthのインストールが正しく機能しない場合は、.Xauthorityファイルが破損している可能性があります。この特定のケースでは、一部のXクライアントは機能しましたが、新しいディスプレイで失敗する傾向が大きい他のクライアントは機能しませんでした。 .Xauthorityファイルを削除して再作成すると、この問題を解決できます。

6
hildred

上記ですでに説明したように、以下は私のために働きました:

〜/ .ssh/configを編集して行を追加します

Host *
    XAuthLocation /opt/X11/bin/xauth

そして今ssh -X hostnameは機能します(XQuartz 2.7.11、macOS 10.4 Mojave)

4
shepster

すでに最新のXQuartz 2.7.11をインストールしていますが、それ以来、OSを何度かアップデートしたと思います。 XQuartz 2.7.11を再インストールしましたが、正常に動作しています。

0
Ulmo