WSL 上の Ubuntu を使用して xauth ファイルを生成できない

WSL 上の Ubuntu を使用して xauth ファイルを生成できない

簡単に説明します。WSL Ubuntu ディストリビューションをホストする Windows マシンで X サーバーを実行しています。ローカルとリモートの両方で GUI プログラムを起動できます。たとえば、ローカル WSL から起動することも、 SSH セッションのときにgvim起動することもできます。gvim


WSLはリモートサーバーとの通信に適しており、X転送もうまく機能しています。しかし、次のようなエラーが引き続き発生します。追加テキストコマンドを実行するときssh -X user@machine_ipこれはすべての GUI セッションが安全でないことを意味するのでしょうか?大きな潜在的な脅威を示唆するものでなければ、そのようなメッセージは受け入れることができます。

Warning: No xauth data; using fake authentication data for X11 forwarding.

次のインストーラーと構成手順を実行しましたが、最後の手順で失敗しました。

mv ~/.Xauthority ~/old.Xauthority 
sudo apt install ssh xauth xorg -y
touch ~/.Xauthority
xauth generate $DISPLAY .

次のエラーメッセージが表示されます

xauth: (argv):1:  couldn't query Security extension on display "localhost:0.0"  

私は、3 台の Windows マシン (ラップトップ 2 台とデスクトップ 1 台) で上記の問題を再現しましたが、Warning: No xauth data;4 台目のデスクトップ コンピューターで「 」というメッセージが表示されなくなりました。その後、次の内容を 4 台目のデスクトップ コンピューターから残りの 3 台のマシンにコピーしましたが、何も改善されませんでした。

  1. ファイルの内容~/.Xauthority
  2. 以下を追加しました/etc/ssh/config:
    ForwardAgent no
    ForwardX11 no
    ForwardX11Trusted yes
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    XauthLocation /usr/bin/xauth
  1. 以下を追加しました~/.ssh/config:
Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
    Protocol 2
    GSSAPIDelegateCredentials no
    XAuthLocation /usr/bin/xauth

xauth最後に、 WSL (Ubuntu 18.04 LTS) を実行しているすべてのバグのある Windows マシン間でプログラムとの次の「会話」が継続して発生します。

User @ machine ➜  ~  xauth                                                   
Using authority file /home/llinfeng/.Xauthority 
xauth> generate $DISPLAY                                                                                  
xauth: (stdin):2:  unable to open display "$DISPLAY".                                                     
xauth> generate $DISPLAY .                                                                            
xauth: (stdin):3:  unable to open display "$DISPLAY".                                                     
xauth> add $DISPLAY .                                                                                     
xauth: (stdin):4:  bad "add" command line                                                                 
xauth>    

のマニュアルを確認するとxauthaddどうやら有効なコマンドのようです。


3 つの WSL ディストリビューションを試しましたが、すべて同じ「No xauth data」エラー メッセージが表示されました。Microsoft Store の 3 つのディストリビューションには、Ubuntu、Ubuntu 18.04 LTS、Pengwin (Debian) が含まれます。


xauth適切な「xauth データ」を生成するコマンドを取得する方法を教えてください。

答え1

投稿とあなたの回答によると、このエラー メッセージを除いてすべて正常に動作しています。

メッセージには、「偽の認証データ」がリモート セッションに送信されていることが書かれているようです。そのデータを使用することでリモート攻撃者が利益を得るとは考えられないので、「xauth データなし」という警告を単に無視しても安全ではない理由がわかりません。

WSL は Linux の完全な実装ではありません。多くのシステム コールとライブラリが実装されていますが、実装されていないものもたくさんあります。

私の個人的な意見ですが、エラー メッセージは、誤って実装された機能や実装されていない機能から発生したものと考えて、無視しても問題ありません。

答え2

Windows には X サーバーがないため、動作させるには Xming などの X サーバーをインストールする必要があります。

ssh はリモート マシンの X サーバー要求を自分のマシンに転送するだけなので、リモート マシンに X サーバーがない場合はエラーが発生します。

Xmingをインストールした後、SSHではなくWSLシェルで次のコマンドを入力します。

export DISPLAY=:0

このコマンドは新しいターミナルを開くたびに実行する必要があります

追加することもできます~/.bashrc

動作しない場合は、xtermもインストールしてください。これにより、すべてのXライブラリがインストールされます。ubuntuの場合

sudo apt update;sudo apt install xterm

その後、xauthを通常通り使用できます

無効にすることもできますxauth +

-YX 転送を使用する場合は、ssh のフラグも使用する必要があります。

ssh -Y user@host

xming をインストールしたが動作しない場合は、DISPLAY 変数が設定されていることを確認してください。この変数は WSL でのみ設定する必要があり、xauth を使用できます。

export DISPLAY=:0

答え3

あなたの状況に関係があるかどうかはわかりませんが、次の理由で xauth コマンドに問題がありました:

  • 私はdrvfsファイルシステムをマウントし、それをホームとして使用していました
  • drvfs はリンク (ハードリンクまたはシンボリックリンク) をサポートしていません。
  • xauthはリンクを使用しようとする

ちなみに、私は XAUTHORITY 環境変数を wsl ext4 ファイル システム内のパスに設定することでこの問題を回避しました。

.ICEauthority と ICEAUTHORITY 環境変数も同様です。(iceauth のマニュアル ページには ICEAUTHORITY 環境変数について記載されていませんが、動作するようです。)

関連情報