FUSE (SSHFS) или удаленная файловая система через SSH

FUSE (filesystem in userspace) — модуль для ядер Unix-подобных операционных систем, позволяет монтировать пользователям без привилегий удаленные файловые системы. Это достигается за счёт запуска кода файловой системы в пользовательском пространстве, а модуль FUSE является связующим между ядром и пользовательским интерфейсом (userspace). C использованием средств FUSE разработаны SSHFS, NTFS-3G, GlusterFS, ZFS.

Распространяется под лицензиями GNU GPL и LGPL. Официально включён в главное дерево ядра Linux с версии 2.6.14

Более простыми словами… Пользователь без привилегий может смонтировать себе файловую систему на удаленном сервере по безопасному соединению через ssh.

Будем подключаться с CentOS на Debian, можно и наоборот с изменением команды yum на apt.

Ставим sshfs:

$ sudo yum install sshfs

Создаем папку для монтирования удаленной папки:

$ mkdir /home/local_user/ruser

Подключаемся:

$ sshfs remoute_user@server_name:/dir/ /home/local_user/ruser

Если порт SSH отличается от стандартного, то (например 1234):

$ sshfs -p 1234 local_user@server_name:/dir/ /home/local_user/ruser

Проверить смонтированный диск:

$ df -Th

Отмонтировать:

$ fusermount -u /home/local_user/ruser

Автоподключение

Если необходимо постоянное подключение, то должна быть настроена аутентификация по ssh ключу на сервере, иначе автоматическое монтирование не произойдет. Проще говоря, ssh подключение к удаленному серверу без ввода пароля.

Отредактируем /etc/fstab:

$ sudo echo "remoute_user@server_name:/dir/ /home/local_user/ruser fuse.sshfs defaults,_netdev,allow_other,reconnect,uid=1000,IdentityFile=/home/local_user/.ssh/id_rsa 0 0" >> /etc/fstab

Что мы указали? Поскольку подключение происходит через ssh, а монтирование файловых систем от имени root, то и файл ключа операционная система будет искать в директории /root/.ssh/, а для пользователя local_user ключ расположен в его домашней директории /home/local_user/.ssh/, поэтому необходима настройка авторизации через ssh ключи и явное указание на конкретный ключ (не root). uid=1000 — это uid локального пользователя (local_user) кому подключаем. Кроме того, нужно один раз подключиться к серверу от имени пользователя root — чтобы был создан файл /root/.ssh/known_hosts.

Сделаем эти настройки:

$ ssh-keygen
$ ssh-copy-id -i ~/.ssh/id_rsa.pub remoute_user@server_name

Проверим, подключение должно произойти без пароля:

$ ssh remoute_user@server_name

и от имени root:

# ssh -i /home/local_user/.ssh/id_rsa remoute_user@server_name

Fstab не единственный метод монтирования разделов при загрузке, можно использовать аналогично и другие методы.

Дополнительно: https://wiki.archlinux.org/index.php/SSHFS_(Русский)

Top