让 `sshfs` 在 WSL 上工作或寻找替代方案

Isa*_*rey 16 filesystems sftp sshfs fuse windows-subsystem-for-linux

我大学的 CS 部门有自己的服务器用于开发(从现在开始,dev.univ.edu)。我可以通过 SSH 和 SFTP 访问此服务器,并且希望使用 WSL 在我的 Windows 笔记本电脑上做一些繁重的工作。我的计划是sshfs通过 SFTP 在我的笔记本电脑上安装服务器的文件系统,这样我就可以使用我自己的工具,而不必使用我们服务器上的有限程序。但是,每当我尝试使用时,都会sshfs发生以下情况:

user@host:~$ sshfs -p 22 user@dev.univ.edu: ~/dev/ -o follow_symlinks
> fuse: device not found, try 'modprobe fuse' first
Run Code Online (Sandbox Code Playgroud)

运行modprobe fuse给了我以下结果:

modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.0-43-Microsoft/modules.dep.bin'
modprobe: FATAL: Module fuse not found in directory /lib/modules/4.4.0-43-Microsoft
Run Code Online (Sandbox Code Playgroud)

一些挖后,似乎fuse不支持WSL,偶数后UserVoice的页面进行fuse支持已经运行了2年有超过1500人要求它。由于sshfs依赖fuse(我假设创建远程文件所在的文件系统),因此sshfs无法使用。

我发现了一个billziss-gh/winfsp看起来很有前途的项目 ( ),但我不知道如何将它与sshfs. 有没有比我知识渊博的人可以帮助我完成这项工作?

编辑:根据此问题winfsp将不适用于 WSL。但是,我注意到同一个人 ( billziss-gh/nfs-win) 的一个项目可能有用。

小智 13

所以我有一个您可能会喜欢的解决方法。我安装了SFTP Net Drive 2017 ,然后远程连接到我想要的文件系统。我将它(通过 GUI)映射为R:\. 从WSL,可以再映射R:\到本地文件夹作为解释在这里

所以在 WSL 中,我的主目录中有一个名为cluster. 要将其安装为我的集群中的本地主页,我运行:

sudo mount -t drvfs R: ~/cluster
Run Code Online (Sandbox Code Playgroud)

并卸载它,我运行

umount ~/cluster
Run Code Online (Sandbox Code Playgroud)

为方便起见,我创建了一个名为 的别名mc,它来自我的.bashrc

alias mc="sudo umount ~/cluster; sudo mount -t drvfs R: ~/cluster"
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!


Isa*_*rey 9

自从我提出这个问题以来,微软已经在其 Insiders Preview 圈中发布了 WSL 2。由于这为 WSL 提供了完整的 Linux 内核,因此不需要更多的解决方法来让 SSHFS 工作。

更新: WSL 2 现在从 Windows 2004 版开始公开可用。玩得开心!