Помощник веб-разработчикаИнструментыИнструкции

SSHFS: установка и применение.

SSHFS (Secure SHell FileSystem) — клиент на Linux, для монтирования файловых систем удалённых компьютеров подключённых через SFTP (SSH File Transfer Protocol) с помощью модуля FUSE. Если говорить просто, то благодаря этой программе, можно работать с каталогами и файлами удалённого компьютера, так же как со своими, в том числе применяя программы установленные в Вашем компьютере.

Установка SSHFS.

Для работы SSHFS, в удалённом компьютере должен быть установлен и настроен SSH-сервер, а в локальном — OpenSSH-клиент, чтобы установить SSHFS, введите в терминале одну из команд.

Для Ubuntu и Debian:

sudo apt install sshfs

Для CentOS и RHEL:

sudo yum install sshfs

Сама утилита не требует ни каких настроек. Настройки соединения производятся в конфигурационном файле OpenSSH-клиента. Если Вы можете подключаться через SSH, то сможете и через SFTP, в противном случае, сначала настройте SSH соединение. Так же в конец файла /ets/fuse.conf необходимо прописать строку:

user_allow_other

Этот параметр позволяет модулю FUSE применять опции (если они указаны):

Смысл в том, что по умолчанию, FUSE предоставляет доступ к подключённому разделу только тому, кто осуществил подключение, доступ закрыт даже для root. Многие утилиты и программы могут полноценно работать только с правами root и если для него доступ закрыт, то работать они не будут.

Подключение SSHFS.

Перед подключением, необходимо создать пустой каталог (или пустой файл, если необходимо подключить только файл), он будет использоваться в качестве точки монтирования. Создавать его, желательно, в каталоге для монтирования (может быть разным в зависимости от дистрибутива), но допустимо и где-нибудь в домашней папке. Каталог может принадлежать любому пользователю, но у подключающегося должны быть права на чтение, изменение и доступ к содержимому. Название может быть любым, в примере он будет называться «Mount».

Настройки подключения очень гибкие и все варианты перечислить не возможно, далее будут даны два наиболее распространённых рабочих варианта подключения в качестве примера, в дальнейшем Вы сами сможете модифицировать их на своё усмотрение.

Подключение SSHFS по клику.

Этот способ удобен тем, что достаточно один раз настроить, после чего можно подключаться одним кликом по иконке соответствующего тома в боковой панели файлового менеджера. Нужда постоянно вводить команду в терминале (порой длинную) отпадает.

Для ввода кодовой фразы ключа или пароля в системе удалённого компьютера Вам понадобится утилита askpass, для её установки необходимо выполнить команду.

Для Ubuntu и Debian:

sudo apt install ssh-askpass

Для CentOS и RHEL:

sudo yum install openssh-askpass

В конец файла, /etc/fstab с новой строки необходимо вписать строку (запись должна быть одной строкой, обратите внимание на пробелы):

имя@хост:/ /путь/до/Mount fuse.sshfs port=номер,noauto,_netdev,user,allow_root,follow_symlinks,identityfile=/home/домашняя_папка/.ssh/название,reconnect,debug,sshfs_debug 0 0

Всё что выделено зелёным, требует подстановки Ваших значений, пояснения:

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

sudo mount /путь/до/Mount

При необходимости, можно добавлять и убирать опции, для просмотра возможных опций наберите в терминале:

sshfs -h

Обратите внимание, опции «debug» и «sshfs_debug» нужны только при отладке подключения, (хотя пример проверен и рабочий, могут возникнуть проблемы), когда всё настроите, их лучше удалить.

Подключение SSHFS из терминала.

Этот способ подходит для разовых подключений, например, если вдруг понадобится использовать какую-нибудь дополнительную опцию.

Для подключения из консоли нужно ввести команду вида:

sshfs имя@хост:/раздел /путь/до/Mount -p номер -o allow_root

Всё что выделено зелёным, требует подстановки Ваших значений, пояснения:

Если команда введена верно, произойдёт подключение и потребуется авторизация. Авторизация может произойти автоматически, если есть SSH-ключ и не установлено кодовое слово, в противном случае последует предложение ввести пароль или кодовое слово для ключа.

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

Работа с удалённой файловой системой.

В *nix системах, для многих действий требуются права root, но SFTP не подразумевает отправку команд, а выполнение sudo или su через ssh даёт права только для текущей сессии. В таких случаях остаётся либо работать через SSH в терминале, либо аутентифицироваться как пользователь имеющий права root. Возможность входа в систему как root, это потенциальная уязвимость, потому для входа лучше создать его псевдоним.

При монтировании удалённой файловой системы c помощью FUSE, работа с ней будет производиться средствами Вашей операционной системы и программами установленными в ней. Но следует учитывать тот факт, что она всё равно остаётся частью операционной системы удалённого компьютера, непонимание этого факта может вызывать некоторые трудности. Отличным примером станет изменение владельцев и групп для файлов или каталогов.

В Linux, для изменения владельца и группы для каталога или файла необходимо иметь права root, в данном случае эти права должны быть получены в системе удалённого компьютера. В то же время файловые менеджеры позволяют изменять владельца только если они запущены через sudo (для подобных случаев и нужна опция «allow_root»).

Поняв как изменять владельца, возникает ещё одна трудность. *nix системы не используют имена пользователей и названия групп, вместо имён используются их идентификаторы UID и GID. Когда Вы указываете владельца файла, linux заменяет имя пользователя на его UID в локальной системе, но в удалённой системе такого UID может не быть или он может принадлежать другому пользователю. Потому нужно указывать UID из удалённой системы или настроить преобразование UID и GID.

Многие файловые менеджеры позволяют только выбирать пользователя или группу из существующих в системе локального компьютера, при этом нет возможности указать UID или GID. Так же некоторые файловые менеджеры закрывают не привилегированному пользователю доступ если каталог удалённого компьютера принадлежит другому. Лучший выход это установка другого файлового менеджера, очень хорошо для этих целей подходит pcmanfm.

Отключение

По завершении работы, для отключения, достаточно размонтировать подключённый раздел, выполнив команду:

fusermount -u /путь/до/mount

или

sudo umount /путь/до/mount

Результатом выполнения команды будет размонтирование тома, разрыв соединения и завершение программы.