Mac(OS X 10.6.7を実行)でssh -X
を使用してUbuntu(11.04)ボックスに接続すると、次の警告が表示されます。
警告:信頼できないX11転送のセットアップに失敗しました:xauthキーデータが生成されていません警告:xauthデータがありません。 X11転送に偽の認証データを使用する。
この警告を消すために何かできることはありますか?そうでない場合、無視しても安全ですか?
X11転送は正常に機能しているようですが、次のメッセージが表示されます。
Xlib:ディスプレイ「localhost:10.0」に拡張「RANDR」がありません。
それは警告に関連していますか? (私は推測していません。そうでない場合は、それについて新しい質問を提出します。)
-Xフラグの代わりに-Yフラグを使用したくない理由がありますか?
簡単に言うと、-Xと-Yの違いは、-Yが信頼できるX11転送を有効にすることです。
2015年にここに来る場合:他のすべてが適切に設定されている場合でも、ssh -X
を使用してXQuartzバージョン<= 2.7.7を実行している場合、これはMac OS X 10.10 Yosemiteでも発生する可能性があります。根本的な原因は、Xauth検索パスの外でX11ディスプレイソケットが書き込まれることです:XQuartzトラッカーの問題 #2068 。
編集:修正されたXQuartzが新しいホームページ xquartz.org でリリースされており、そこから最新バージョン(現在2.7.9)をインストールすると問題を回避できます。
-Y
を使用しても同じメッセージが表示される場合は、xauth
プログラムがサーバーにない可能性があります。 Debianのようなシステムでは、xauth
パッケージが必要です。 RedHatのようなシステムでは、xorg-x11-xauth
パッケージが必要です。
このコンテキストで「信頼されていない」とは、接続を信頼していないことを意味します。 SSHはX11転送をより安全にするために追加のセキュリティ対策を使用します。 「信頼されている」とは、リモートホスト上の何もXauthデータにアクセスできず、それを使用して、たとえばキーストロークを監視することに完全に自信があることを意味します。
この用語は実際に何年もの間私を混乱させました。 「信頼できる」接続の方が安全だと思いました。しかし、実際には、接続がIS信頼できるものであり、余分なセキュリティ対策を邪魔することなく何かを実行したい場合に使用するはずのオプションです。 "信頼できない"は、信頼できないリモートホストを処理する方が(ある程度)安全です。
「信頼できない」接続は、X11セキュリティ拡張機能を利用し、(おそらく)不要な他の拡張機能を無効にすることで、ブラックハットがあなたにできることを制限しようとします。これが、RandRが-Xで無効にされている理由です。リモートホストからXディスプレイを回転できるようにする必要がありますか?
また、「信頼できない」X11転送は、誤ってオンにしないように、一定の時間が経過するとオフになることにも注意してください。その後、ウィンドウを開く新しい試みは失敗します。何が起こっているのかを理解するのに十分なドキュメントを読む前に、それは何度か私を噛みました.
[〜#〜]注意[〜#〜](セキュリティ上の欠陥につながる不完全な回答を読むことに疲れる)
ssh -Yを使用するということは、ここに偽のxauth情報があることを意味します!
xQuartzは、有効にするとxauthを使用するため、ssh -Xが機能するはずです。唯一の問題は、sshが/ usr/X11R6/binでxauthを探し、XQuartzを使用するmacosでは/ opt/X11/binにあることです。
安全な解決:
認証された接続を有効にする設定(Cmd-、)のSecurityタブで最初のオプションを有効にします
以下を$HOME/.ssh/config
に追加します
XAuthLocation /opt/X11/bin/xauth
ssh -X you_server
は安全な方法で機能します
まず、サーバー側の問題を除外する必要があります。他のホストからssh -X
を正常に実行できますか? ssh -Y
は機能しますが、ssh -X
は機能しませんか?どちらの場合も、サーバーでssh + X11が正しく設定されていると想定し、次のセクションに進みます。
それを確認する立場にない場合(たとえば、X11を実行している1台のラップトップしか持っていない場合)、偽のセッションを使用してサーバーからssh
を実行できます。
export DISPLAY=:44
#(ボーンシェル)またはsetenv DISPLAY :44
#(csh/tcsh)xauth add $DISPLAY MIT-MAGIC-COOKIE-1 1234
#このテスト専用の偽のCookiessh -X localhost env |grep DISPLAY
期待される結果:ssh-to-selfセッションのリモートエンドにDISPLAY変数が設定されているはずです。結果が得られない場合は、サーバーが正しく構成されていない可能性があります(X11ライブラリーやxauth
コマンドが欠落している、またはsshd構成がX11アクセスを拒否するように設定されている可能性があります)。
Will Angley's answer のとおり
ssh -vv -X
の出力を確認する引用するエラーメッセージは、多くの原因が考えられる症状です。 ssh -X -vv remotehost
を使用してもう一度お試しください。X11トンネルのセットアップが失敗した理由についての手掛かりが得られます。
次のメッセージが表示されますか?
debug1:xauthプログラムなし。
xauth
コマンドが存在する場所に注意してください:どのxauth
ホスト* XAuthLocation /opt/X11/bin/xauthステップ1の結果に従ってこのパスを調整します— Jan-Willem Arnoldへのクレジット
私はこの動作を示すことができる設定を持っていないので、これは暗闇の中でのショットです:
この警告を発するホストのForwardX11Trusted
を"no"
に設定すると、警告が抑制される場合があります。これは~/.ssh/config
または/etc/ssh/ssh_config
のいずれかに配置でき、上の行にHost <hostname>
を含めることにより、特定のホストに固有のオプションを作成できます。 <hostname>
コンポーネントは、コマンドラインで入力したもの(解決されたホスト名ではない)と一致し、ワイルドカードを含めることができます。
xauth
のインストールが正しく機能しない場合は、.Xauthority
ファイルが破損している可能性があります。この特定のケースでは、一部のXクライアントは機能しましたが、新しいディスプレイで失敗する傾向が大きい他のクライアントは機能しませんでした。 .Xauthority
ファイルを削除して再作成すると、この問題を解決できます。
上記ですでに説明したように、以下は私のために働きました:
〜/ .ssh/configを編集して行を追加します
Host *
XAuthLocation /opt/X11/bin/xauth
そして今ssh -X hostnameは機能します(XQuartz 2.7.11、macOS 10.4 Mojave)
すでに最新のXQuartz 2.7.11をインストールしていますが、それ以来、OSを何度かアップデートしたと思います。 XQuartz 2.7.11を再インストールしましたが、正常に動作しています。