Я пытаюсь автоматически смонтировать каталог с удаленной машины Ubuntu на моем Mac Mavericks. 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? Или как еще можно автоматически монтировать sshfs на OSX?
(У меня 10.9.5 с sshfs 2.5.0 от homebrew)
решение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:/УДАЛЕННЫЙ/КАТАЛОГ /ЛОКАЛЬНЫЙ/ТОЧКА_МОНТИРОВАНИЯ fuse.sshfs x-systemd.automount,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.ssh/id_rsa,allow_other,default_permissions,uid=ИД_ПОЛЬЗОВАТЕЛЯ_N,gid=ИД_ПОЛЬЗОВАТЕЛЯ_GID_N 0 0
Если вышеописанное не работает, проверьте, не добавлена ли в этот контент задержка delay_connect, и проверьте.
Также
см. Macfusion. Также полезно прочитать FAQ OSXFUSE, чтобы узнать, почему Macfusion является обязательным требованием для файловых систем пользовательского пространства SSHFS.