如何在Windows的两个不同WSL2实例间访问同一文件?
如何在Windows的两个不同WSL2实例间访问同一文件?
嗨,这个问题我刚好碰到过,其实不用折腾Samba,有几个更简单的办法,完全能满足你的需求:
方法一:借助Windows共享目录(最省心)
这是我最推荐的方案,因为WSL2本身就默认挂载了Windows的文件系统,两个实例都能直接访问,不用配置任何网络:
- 先在Windows系统里创建一个共享文件夹,比如
C:\WSLShared,记得给两个Windows用户都设置读写权限(因为你的两个WSL分别属于不同用户)。 - 打开第一个WSL实例,直接通过路径
/mnt/c/WSLShared访问这个文件夹,把需要共享的文件放进去就行。 - 打开第二个WSL实例,同样访问
/mnt/c/WSLShared,就能直接读写同一个文件了。
小贴士:如果觉得
/mnt/c/xxx路径太长,可以在WSL里用ln -s /mnt/c/WSLShared ~/shared创建一个软链接,以后直接用~/shared就能快速访问。
方法二:通过SSH挂载WSL内部目录(适合不想用Windows目录的场景)
如果你更倾向于在WSL内部的目录共享,也可以用SSHFS挂载:
- 在其中一个WSL实例(比如WSL A)里安装OpenSSH服务:
sudo apt update && sudo apt install openssh-server - 修改SSH配置,允许密码登录(默认可能禁用了):
找到sudo nano /etc/ssh/sshd_configPasswordAuthentication这一行,改成PasswordAuthentication yes,保存退出。 - 重启SSH服务:
sudo service ssh restart - 获取WSL A的IP地址:
在WSL A里运行:
或者在Windows命令行里指定WSL名称查询:ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1wsl -d <你的WSL_A名称> hostname -I - 在另一个WSL实例(WSL B)里安装SSHFS:
sudo apt update && sudo apt install sshfs - 创建挂载点并挂载WSL A的目录:
输入WSL A的用户密码后,就能在sudo mkdir /mnt/wsl_shared sudo sshfs <WSL_A的用户名>@<WSL_A的IP>:/home/<WSL_A的用户名>/shared /mnt/wsl_shared/mnt/wsl_shared里访问WSL A的共享目录了。
为什么不推荐Samba?
主要是因为WSL2的IP地址每次重启都会变化,配置Samba后还得每次更新IP,太麻烦。上面的两种方法要么不用网络,要么配置一次就能用(如果觉得IP变麻烦,还可以给WSL设置静态IP,但没必要,方法一足够简单)。
备注:内容来源于stack exchange,提问作者leeand00
相关产品推荐
相关产品推荐

