如何在 OSX 上使用 /etc/fstab 和/或 sshfs 自动挂载?

如何在 OSX 上使用 /etc/fstab 和/或 sshfs 自动挂载?

我正在尝试在我的 Mavericks Mac 上自动挂载远程 Ubuntu 机器上的目录。SSHFS 在手动挂载时可以完美运行,方式多种多样。标准 sshfs 挂载效果很好:

sshfs user@desk:/home/user desk 

我甚至可以使用mount

sudo mount -t sshfs -o allow_other,IdentityFile=/Users/user/.ssh/nopass_id_dsa [email protected]:/home/user desk

(我遵循OSXFuse 自动安装说明建立mount_sshfs

我想将其变成自动挂载。最简单的方法(OSXFuse 推荐的方法是将上述mount命令变成一个/etc/fstab条目:

[email protected]:/home/user    /Network/desk   sshfs   allow_other,IdentityFile=/Users/user/.ssh/nopass_id_dsa 0 0 

但那不起作用:

Network $ sudo mount desk
mount: desk: unknown special file or file system.

同样,如果我这样做,sudo automount -vc那么当我尝试输入挂载点时,要么会收到长时间超时,要么会收到无用的“操作不允许”错误,具体取决于我如何使用 fstab 选项的格式。当我尝试设置自动挂载映射时,我遇到了同样的错误,如所述这里

我的 fstab 条目有什么问题?或者,我还能如何在 OSX 上自动挂载 sshfs?

(我使用的是 10.9.5 版本,使用的是 homebrew 中的 sshfs 2.5.0)

答案1

由于 OSXFuse 中存在错误,因此必须使 allow_other 标志正常工作:

sudo sysctl -w osxfuse.tunables.allow_other=1

这可能会或可能不会修复 fstab 问题,但它确实适用于直接映射。以下是我设置的方法。

将这一行添加到 /etc/auto_master:

/-                              auto_ssh          -nobrowse,nosuid

创建/etc/auto_ssh:

/Users/USER/MOUNT_POINT          -fstype=sshfs,allow_other,idmap=user,cache=no          USER@LINUXMACHINE:/home/USER

(假设您已经设置了无密码密钥。)

告诉 autofs 您的更改:

sudo automount -vc

为了使 osxfuse.tunables.allow_other 更改在重启后继续生效:

输入以下内容/Library/LaunchDaemons/sysctl.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Label</key>
 <string>sysctl</string>
 <key>ProgramArguments</key>
 <array>
   <string>/bin/bash</string>
   <string>-c</string>
   <string>/Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs; /usr/sbin/sysctl -w osxfuse.tunables.allow_other=1</string>
 </array>
 <key>RunAtLoad</key>
 <true/>
</dict>
</plist>

使用以下代码加载 plist:

launchctl load /Library/LaunchDaemons/sysctl.plist

答案2

尝试在 fstab 中添加以下格式:

用户名@主机名或IP:/REMOTE/目录/LOCAL/MOUNTPOINT fuse.sshfs x-systemd.automount,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/用户名/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0

如果以上不起作用,请检查 b 在该内容中添加 delay_connect 并检查。

请参阅 Macfusion。阅读 OSXFUSE 的常见问题解答以了解将 Macfusion 作为 SSHFS 用户空间文件系统的要求的理由也是有益的。

http://macfusionapp.org/

相关内容