web-dev-qa-db-ja.com

WSLでUbuntuを使用してxauthファイルを生成できません

簡単な説明:WSLUbuntuディストリビューションをホストするWindowsマシンでXサーバーを実行しています。ローカルとリモートの両方でGUIプログラムを起動できます。たとえば、ローカルWSLからgvimを起動したり、SSHセッションのときに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台のデスクトップ)で再現しましたが、4台目のデスクトップコンピューターの「Warning: No xauth data;」メッセージをなんとか取り除くことができました。次に、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

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

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>    

マニュアルでxauthを確認すると、addは有効なコマンドのようです。


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


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

3
llinfeng

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

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

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

私の個人的な意見:このような誤って実装された、または実装されていない機能からのエラーメッセージを安全に受け取り、無視することができます。

1
harrymc

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

sshは、リモートマシンのX Serverリクエストをあなたのリクエストに転送しているだけで、それがない場合はエラーをスローします。

xmingをインストールした後、sshにないWSLシェルで次のコマンドを入力します。

export DISPLAY=:0

このコマンドは、新しい端末を開くたびに実行する必要があります

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

それが機能しない場合は、xtermもインストールしてください。すべてのXライブラリがインストールされます。 Ubuntuで

Sudo apt update;Sudo apt install xterm

その後、通常のようにxauthを使用できます

xauth +を使用して無効にすることもできます

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

ssh -Y user@Host

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

export DISPLAY=:0
0
Erfan Azhdari