我有一台 Windows 2022 Server,版本 23H2 / 22631,它在 WSL2 中运行 Ubuntu 22.04 发行版。
如果我在服务器上,我可以使用\\wsl$\Ubuntu
Explorer 中的路径访问此分发中的文件。
有没有办法从与服务器有网络连接的另一台计算机上的 Explorer 访问这些相同的文件?
我可以\\server\c$
从这台网络机器顺利访问 eg。我希望我可以转到 eg\\server\wsl$\Ubuntu
并获取服务器的 WSL 文件,但似乎不存在这样的事情。
我考虑在 Ubuntu 发行版上安装 Samba。但发行版的主机名与主机 2022 服务器相同,所以我不知道如何在不终止主机的 SMB 流量的情况下将 SMB 流量重定向到 WSL。
如果可能的话,我希望避免使用复制文件/同步/scp 之类的黑客手段。我知道这些,尽管它们不太方便。通过 Explorer 直接访问文件是理想的选择。
答案1
我还没有尝试过,但这里有一些信息可能可以实现。
WSL2 现在具有 镜像模式网络 这使得它像在 WSL1 中一样工作,没有 NAT,通过使用主机的网络适配器并假设主机的 IP。
镜像模式通过以下方式启用:
创建文件
%UserProfile%\.wslconfig
(如果不存在)在文件中添加以下行:
[wsl2] networkingMode=mirrored
使用以下方法关闭 WSL
wsl --shutdown
启动 WSL 分发。
您仍需要在 Windows 防火墙中启用入站 SAMBA 端口。根据文档,用于启用所有传入端口或仅启用一个端口的提升的 PowerShell 命令:
在具有管理员权限的 PowerShell 窗口中运行以下命令来配置 Hyper-V 防火墙设置以允许入站连接:
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
或New-NetFirewallHyperVRule -Name MyWebServer -DisplayName "My Web Server" -Direction Inbound -VMCreatorId "{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}" -Protocol TCP -LocalPorts 80
。
可能需要进行一些实验,但这可能足以使 WSL2 中的 samba 服务器可通过 LAN 访问。
答案2
默认情况下启用 c$ 共享位置。如果您有其他要共享的目录,则必须单独共享该位置。有几种方法可以做到这一点,但最简单的方法是使用 GUI,只需找到包含 Ubuntu 文件的文件夹目录并右键单击,选择属性,然后选择共享选项卡。
您描述的困难可能是这些文件的“位置”并不直观地位于您认为的位置。容器化可能会将这些目录可视化。