Автоматическое монтирование 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) имел доступ к смонтированному каталогу.

Другие варианты можно найти на странице руководства 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. Так что, возможно, это поможет кому-то другому.

Другие вопросы по тегам