WSL2からホストに接続する

WSL2からホストに接続する

質問

ファイアウォールルールのため、WSL2はWindows X Server(VcXsrv)に接続できません。動作する場合もあり、動作しない場合もあります。奇妙です。ファイアウォールルールは変更できません。

ただし、WindowsからWSL2へのすべての接続は正しく機能します。

アイデア

WSLのすべてのサービスをミラーリングし、WSLからアクセスできるようにクライアント/サーバーのペアを仲介サービスとして実行できますか?

------------Windows Host------------
| [Windows X Server] <--- [Client] |
-----------------------------↑------
                             |
----------------WSL----------v---------
| [XGui Client] ---> [Mirror service] |
---------------------------------------

ベストアンサー1

ただし、WindowsからWSL2へのすべての接続は正しく機能します。

背景知識として、WSL2 ネットワークが仮想 Hyper-V スイッチの背後で NAT されることを理解することが重要です。これは実際に分離Windowsホストのレイヤ2ネットワーク。

通信する~からWindows到着WSL2を考えてみよう国を離れるWindowsからWSL2へのインバウンドトラフィックなので、ファイアウォールルールは必要ありません。デフォルトでは、Windowsはほとんどのアウトバウンドトラフィックを許可しますが、WSL2上で実行されるLinuxディストリビューションはほとんどのインバウンドトラフィックを許可します。

この場合、私たちはこれを利用することができます...

WSLのすべてのサービスをミラーリングし、WSLからアクセスできるようにクライアント/サーバーのペアを仲介サービスとして実行できますか?

このコンテンツにタグを付けました。これは合理的な考えです。以前も同様に成功しましたが、socat(a)時間がかなり経過し、(b)私が使用したレシピを再現してXサーバーに適用する必要があり、(c)socatオプションが気に入りました。痛みを克服する。強力ですが、使用するのは必ずしも簡単ではありません。

sshしたがって、WindowsでX転送を使用するWSL2に至るまで、組み込みでより簡単な代替案を提案します。実際、このタイプの巡回を行うように設計されています。

  • OpenSSHを有効にする顧客Windowsの場合([ドキュメント](https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui#install-openssh-for-windows)。この場合、ファイアウォールのルールをオンにする必要があるため、サーバーは必要ありません(すでにできないと言われました)。いいえインストール済みWindowsの場合は、その機能を有効にするだけです。

  • WSL2のLinuxディストリビューションでSSHサーバーを有効にします。実行しているディストリビューションについては言及していませんが、Ubuntu(デフォルトディストリビューション)では次のものが必要です(正しく覚えている場合)。

    • sshd設定を編集 sudo -e /etc/ssh/sshd_configし、別のポートを選択します(例:2222)。
    • PasswordAuthenticationキーを使用しない場合は、有効にすることを選択できます。
    • もちろんですX11Forwarding=yes。 Ubuntuではすでにこのようになっています。
    • 保存と終了。
    • sudo service ssh start
    • ホストキーの紛失に関するメッセージが表示された場合は、sudo dpkg-reconfigure openssh-serverサービスを再起動してみてください。
  • Windowsでは、XLaunchデフォルトオプション(VcXsrv)で起動+「アクセス制御を無効にする」

  • PowerShellでは:

    $env:DISPLAY="localhost:0"
    ssh -Y -p 2222 wslusername@localhost
    

    注:参照これが答えですlocalhostこの場合、なぜ重要なのですか?

  • WSL2インスタンスにログインし、X転送を使用する必要があります。 xtermなどはVcXsrvで起動する必要があります。

おすすめ記事