簡単な説明: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台のマシンに以下をコピーしましたが、何も改善されませんでした。
~/.Xauthority
ファイルの内容/etc/ssh/config
に以下を追加しました。 ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
XauthLocation /usr/bin/xauth
~/.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データ」を生成する方法を教えてください。
投稿とあなたの回答によると、このエラーメッセージを除いてすべてが正しく機能しています。
「偽の認証データ」がリモートセッションに送信されたというメッセージが表示されているようです。リモートの攻撃者に利益をもたらす可能性のあるそのデータの使用方法がわからないので、「xauthデータがない」という警告を単に無視することが安全ではない理由はわかりません。
WSLはLinuxの完全な実装ではありません。多くのシステムコールとライブラリが実装されましたが、多くは実装されていませんでした。
私の個人的な意見:このような誤って実装された、または実装されていない機能からのエラーメッセージを安全に受け取り、無視することができます。
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