如何从局域网内其他Windows机器访问Windows Server 2022上WSL2 Ubuntu的文件?
如何从局域网内其他Windows机器访问Windows Server 2022上WSL2 Ubuntu的文件?
我来给你几个实用的方案,都是能直接通过资源管理器访问的,不用搞那些拷贝同步的麻烦事:
方案一:把WSL目录映射为Windows主机的共享文件夹(最推荐)
这个方法完全不用改动WSL里的配置,直接利用Windows本身的共享功能,兼容性拉满:
- 先在Windows Server本地打开资源管理器,输入
\\wsl$\Ubuntu就能进入WSL的文件系统 - 找到你想共享的目录(比如
/home/你的用户名),右键点击它选择「属性」→「共享」标签页 - 点击「高级共享」,勾选「共享此文件夹」,设置一个好记的共享名称(比如
WSL_Ubuntu_Home) - 点击「权限」,添加需要访问的局域网用户或组,设置对应的读写权限(比如给特定用户设读写,或者给Everyone设只读)
- 搞定后,局域网里的其他Windows机器直接在资源管理器输入
\\你的服务器名\WSL_Ubuntu_Home就能访问这个WSL目录了,和访问普通共享文件夹完全一样
方案二:在WSL里配置独立的Samba服务(避免和主机SMB冲突)
如果你想直接在WSL里搞共享,也能避开主机的SMB服务,只需要改几个配置:
- 先在WSL的Ubuntu终端里安装Samba:
sudo apt update && sudo apt install samba - 先备份原配置文件以防万一:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak - 编辑Samba配置:
sudo nano /etc/samba/smb.conf- 找到
[global]部分,把netbios name改成和主机不一样的名字(比如UbuntuWSL),这样局域网里就能区分开主机和WSL的共享了 - 也可以把默认的SMB端口从445改成其他值(比如4450),彻底避免端口冲突,找到
port = 445这行改成port = 4450就行 - 在文件末尾添加你的共享配置,比如:
[WSL_Share] path = /home/你的用户名 available = yes valid users = 你的WSL用户名 read only = no browsable = yes public = no
- 找到
- 设置Samba用户的密码(必须和WSL里的用户名对应):
sudo smbpasswd -a 你的WSL用户名,输入两次密码确认 - 重启Samba服务:
sudo systemctl restart smbd nmbd - 之后局域网机器可以通过
\\你的服务器IP\WSL_Share访问,如果改了端口的话,可能需要用工具做端口转发,或者直接用WSL的IP访问(前提是WSL用桥接网络)
方案三:切换WSL为桥接网络直接访问
如果你的网络环境允许,可以把WSL改成桥接模式,让它直接获取局域网IP:
- 在Windows Server的PowerShell里运行:
wsl --set-default-network Ubuntu Bridged(确保你的WSL版本是2,之前没设置过的话先跑wsl --set-version Ubuntu 2) - 进入WSL终端,用
ip addr show eth0查看它的局域网IP(比如192.168.1.105) - 之后其他机器可以直接通过
\\192.168.1.105\WSL_Share访问你在WSL里配置的Samba共享,不过这个IP可能会随网络变化,不如前两个方案稳定
备注:内容来源于stack exchange,提问作者neilalex




