質問
ファイアウォールルールのため、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
サービスを再起動してみてください。
- sshd設定を編集
Windowsでは、
XLaunch
デフォルトオプション(VcXsrv)で起動+「アクセス制御を無効にする」。PowerShellでは:
$env:DISPLAY="localhost:0" ssh -Y -p 2222 wslusername@localhost
注:参照これが答えです
localhost
この場合、なぜ重要なのですか?WSL2インスタンスにログインし、X転送を使用する必要があります。
xterm
などはVcXsrvで起動する必要があります。