为什么我无法设置 SSHFS 共享?“OSXFUSE 文件系统不可用”错误

为什么我无法设置 SSHFS 共享?“OSXFUSE 文件系统不可用”错误

我正在尝试从本地计算机到远程计算机设置 SSHFS 共享,但不起作用。我收到错误 OSXFUSE 文件系统不可用(见下文)。如何修复此问题?

仅供参考,我的本地机器是运行 OSX 10.9.3 的 MacBook Pro 笔记本电脑。远程机器实际上是在同一硬件上运行 CentOS 的 VirtualBox。

% brew install sshfs                                # <---- SSHFS is installed
Warning: sshfs-2.5.0 already installed

% brew install osxfuse                              # <---- OSX Fuse is installed
Warning: osxfuse-2.6.4 already installed

% ssh [email protected]                   # <---- See, SSH works!!
Last login: Wed Jun 18 18:36:11 2014 from XXX.XXX.XXX.XXX
[[email protected] ~]% exit

% sudo mkdir /mnt
% sudo mkdir /mnt/Share    
% sudo sshfs -o IdentityFile=~/.ssh/id_rsa.pub [email protected]:/ /mnt/Share
the OSXFUSE file system is not available (-1)
the OSXFUSE file system is not available (1)

我尝试过描述的解决方案这里.但它对我不起作用:

% sudo kextunload -b com.github.osxfuse.filesystems.osxfusefs
(kernel) Kext com.github.osxfuse.filesystems.osxfusefs not found for unload request.
Failed to unload com.github.osxfuse.filesystems.osxfusefs - (libkern/kext) not found.

答案1

您可以使用 Homebrew Cask 安装:

brew install Caskroom/cask/osxfuse

因为:

osxfuse: A full installation of Xcode.app is required to compile this software.
Installing just the Command Line Tools is not sufficient.
Xcode can be installed from the App Store.
osxfuse: Building this formula from source isn't possible due to OS X
Yosemite and above's strict unsigned kext ban.

答案2

我不是这方面的专家,但这种配置对我来说很有用。

安装OSXFUSE

Download OSXFUSE 2.6.0 @ http://osxfuse.github.io/2013/06/17/OSXFUSE-2.6.0.html
With the file downloaded, right click on the .dmg file, open and install it.

安装 SSHFS

如果你尚未安装 Brew,请转到http://brew.sh/并安装它。

安装 Brew 后,在终端中运行:

brew install sshfs

如果您收到类似“同意 Xcode/iOS 许可证需要管理员权限,请通过 sudo 以 root 身份重新运行”的错误。您所要做的就是打开 Xcode 并接受协议,然后等待它安装最后的补丁。

下一个必须修复的错误是 XCode 仍然使用 10.8 版的 SDK,而不是 10.9 版。如果您收到错误“xcodebuild:错误:无法找到 SDK“macosx10.9″”,则需要编辑位于 /usr/local/Library/Formula/fuse4x-kext.rb 的 fuse4x-kext.rb:

Replace on line 21:

“macosx#{MacOS.version}” with “macosx10.8“,

while keeping line 24 (MACOSX_DEPLOYMENT_TARGET) the same.

安装后,Brew 会显示一条消息“为了使基于 FUSE 的文件系统正常工作,root 用户必须安装 fuse4x 内核扩展:”,因此只需执行这两行:

  sudo /bin/cp -rfX /usr/local/Cellar/fuse4x-kext/0.9.2/Library/Extensions/fuse4x.kext /Library/Extensions

sudo chmod +s /Library/Extensions/fuse4x.kext/Support/load_fuse4x

完成所有上述操作后,您应该能够通过 SSH 挂载任何远程文件系统。

要创建要挂载文件系统的路径:

mkdir -pv ~/path/to/mount

最后安装系统:

sshfs -C -p PORT user@server:/ ~/path/to/mount

希望这对你也有用。

相关内容