Автоматическое монтирование sshfs с использованием fstab без mount -a
Пожалуйста, рассмотрите следующую строку fstab (разрывы строк для удобства чтения):
sshfs#user@192.168.1.123:/home/user/
/home/user/Server/
fuse
auto,user,_netdev,reconnect,uid=1000,gid=1000,IdentityFile=/home/user/.ssh/id_rsa,idmap=user,allow_other
0
Работает нормально, но каждую перезагрузку мне нужно использовать mount -a
подключить сервер (или щелкнуть соответствующий значок в Thunar, чтобы подключить устройство)
Можно ли сразу подключить мой каталог ssh во время загрузки?
Я использую Xubuntu 13.10
5 ответов
Правильный синтаксис для монтирования общих ресурсов sshfs при загрузке в файле /etc/fstab
USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY /LOCAL/MOUNTPOINT fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0
Это адаптация к несистемным дистрибутивам инструкций, содержащихся здесь. Если вы вместо этого находитесь в системном дистрибутиве (Arch, Fedora, OpenSUSE,...), подходящая инструкция:
USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY /LOCAL/MOUNTPOINT fuse.sshfs x-systemd.automount,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0
Попробуйте использовать параметр delay_connect.
Полная строка /etc/fstab:
USER@HOSTNAME:/REMOTE/ /LOCAL/ fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0
Те delay_connect
, _netdev
,... верны, но не будут работать, если вы не настроите сеть так, чтобы она появлялась точно (или раньше) в этом маленьком временном окне, когда обрабатывается /etc/fstab. Когда обработка закончится, а работа сети начнется позже, вы должны использовать mount -a
(или друзья).
В большинстве случаев (и мой тоже) network-manager
вызвал проблему, так как он заводит сеть после входа в систему по умолчанию. Это может быть настроено, чтобы поднять это раньше во время загрузки. Если я правильно помню, все, что вам нужно сделать, это проверить опцию Available to all users
в диалоговом окне свойств соединения (или, если вы предпочитаете командную строку, создайте вручную соединение в /etc/NetworkManager/system-connections
).
Основываясь на этой странице справки по Ubuntu и моих попытках с Debian 9, я заставляю его работать и у меня есть права доступа к файлам с этим fstab
запись:
sshfs#user@host:/remote/path /local/path fuse delay_connect,defaults,idmap=user,IdentityFile=/local/path/to/privatekey.pem,port=22,uid=1001,gid=1002,allow_other 0 0
delay_connect
гарантирует fstab
не монтирует удаленную папку до запуска сетевых интерфейсов.
Ты можешь измениться port
, uid
, gid
чтобы соответствовать вашим местным потребностям. Чтобы выяснить мой uid
/ gid
Я просто использовал $ id
когда залогинен с нужным пользователем.
allow_other
позволяет другим пользователям / группам получать доступ к смонтированному каталогу; Даже с правом /local/path
разрешения (например, 777
), это необходимо, если вы хотите, чтобы другой пользователь (отличный от того, кто монтирует sshfs) имел доступ к смонтированному каталогу.
Ответ @MariusMatutiae хорош, но я думаю, что в нем отсутствует очень важный момент. В данной ссылке на Arch Wiki об этом говорится.
И самое главное, используйте каждое монтирование sshfs хотя бы один раз вручную, будучи пользователем root на клиентском компьютере, чтобы подпись хоста была добавлена в файл /root/.ssh/known_hosts клиента. Это также можно сделать вручную, добавив один или несколько общедоступных ключей хоста SSH-сервера (файлы /etc/ssh/ssh_host_*key.pub) в /root/.ssh/known_hosts.
На самом деле вам не нужно монтировать sshfs, покаroot
чтобы это сработало. Этого достаточно, чтобыsudo ssh yourserver
чтобы он добавил открытый ключ в root.
Я установил его на сервере Ubuntu пару лет назад, и я помню, как боролся с этим, но не помнил, какое решение было. Теперь я переключился на OpenSUSE и снова боролся по той же причине, пока не решил прочитать эту страницу Arch Wiki. Так что, возможно, это поможет кому-то другому.