SSHFS
Что такое SSHFS и для чего ее можно использовать
SSHFS (aнгл, Secure Shell FileSystem) — это клиент файловой системы, предназначенный для того, чтобы смонтировать удаленный каталог на сервере с помощью протокола SFTP (англ. SSH File Transfer Protocol) и модуля FUSE (англ. filesystem in userspace). SFTP является более безопасным протоколом передачи данных, по сравнению с FTP, потому что он работает на базе SSH (aнгл, Secure Shell). Кроме того, при использовании sshfs от пользователя совсем не требуются профессиональные навыки настройки серверных ОС, достаточно правильно настроить sshfs на своем компьютере и иметь доступ к серверу. SSHFS удобен для тех пользователей, которым нужен постоянный доступ к удаленной файловой системе, как к локальной папке на своем компьютере. Например, для программистов, которые работают над сложным проектом, при этом файлы с исходным кодом находятся на удаленном сервере компании.
Как настроить SSHFS под Linux
Выполним настройки sshfs на локальной машине под операционной системой Ubuntu 20.04 1 LTS. Удаленная файловая система находится на сервере под управлением Ubuntu 18.04 LTS. Все форматы команд будем описывать для ОС на базе Debian/Ubuntu. Если у вас другие ОС, то адаптируйте наши инструкции, согласно пользовательской документации для этих ОС.
1. Инсталляция пакета SSHFS
В первую очередь, необходимо установить пакет sshfs, как на локальном компьютере, так и на удаленном сервере. Для этого, откроем терминал и выполним следующие команды:
sudo apt-get install sshfs

2. Монтирование удаленной файловой системы в каталог на локальной машине
Создание каталога для монтирования
На следующем этапе, создадим точку монтирования на нашем компьютере. Именно в эту папку мы будем монтировать удаленную файловую систему.
sudo mkdir /mnt/sample5

На данный момент наш каталог пустой

Подключение удаленной файловой системы
Следующий шаг — подключение удаленной директории в каталог /mnt/sample5. Покажем на примере корневого раздела (можно смонтировать и отдельную удаленную папку), выполним команду:
sudo sshfs [email protected]:/ /mnt/sample5 -o allow_other,default_permissions
где root — логин для доступа на удаленный сервер, X.X.X.X — IP адрес сервера.
Эти данные вам должен сообщить ваш провайдер, например FREEhost (после заказа услуги аренды VPS). Затем потребуется ввести пароль доступа к удаленному серверу (он будет вам предоставлен в информационном письме от хостинговой компании FREEhost). Соединение с сервером установлено, и удаленная файловая система смонтирована в локальную папку mnt/sample5, см. скриншот:

В написании команды можно использовать различные параметры (например, allow_other,default_permissions и т.д.), полный перечень их можно узнать, применив команду man:
man sshfs
Если все действия выполнены правильно, то можно увидеть список каталогов файловой системы удаленного сервера в нашей локальной папке /mnt/sample5:
cd mnt/sample5 ls
Для того, чтобы увидеть точку монтирования удаленной файловой системы, вам нужно применить команду:
df –hT

3. Монтирование удаленной папки через авторизацию на основе SSH-ключа
Если у вас настроен безопасный доступ на удаленный сервер с помощью SSH-ключа, то подключить удаленную папку возможно даже без ввода пароля.
Создание SSH-ключей под Linux
Чтобы создать пару SSH-ключей (приватный и публичный) под Ubuntu выполним следующую операцию:
ssh-keygen
Примечание: У вас должен быть установлен пакет openssh.
Затем сохраните файл с ключами в директории «по умолчанию», просто нажав клавишу Enter. Для дополнительной безопасности ключа будет предложено ввести кодовое слово, если эта опция вам не нужна, смело пропускайте данный шаг. На скриншоте ниже показан процесс генерации ключей в папку «по умолчанию», где они будут сохранены.

В результате, создана пара ключей: приватный ключ — id_rsa, публичный ключ — id_rsa.pub. Для просмотра файла с вашим публичным ключом примените команду:
cat ~/.ssh/id_rsa.pub

Для добавления ключа на удаленный сервер выполните следующую команду:
ssh-copy-id [email protected]
В итоге, ваш ключ успешно добавлен на сервер. Проверить подключение к удаленному серверу с помощью SSH-ключа можно будет таким образом:
ssh [email protected]

Примечание: Под Windows SSH-ключи можно сгенерировать с помощью программы PuTTY.
Монтирование удаленной папки в /mnt/sample5
После настройки авторизации на сервере по SSH-ключу, приступим к монтированию удаленной файловой системы в нашу локальную папку, для этого выполним в терминале:
sudo sshfs root@ X.X.X.X:/ /mnt/sample5 -o allow_other,default_permissions,IdentityFile=~/.ssh/id_rsa
Примечание: в некоторых случаях необходимо прописывать полный путь к папке с ключами вместо ~/.ssh/id_rsa.

Результат монтирования можно увидеть в локальной папке /mnt/sample5 или проверить точку монтирования, как мы это делали в предыдущих пунктах нашей статьи.
4. Самый простой способ монтирования удаленной файловой системы
Если у вас мало опыта работы с терминалом Линукс, то подключить удаленный сервер можно с помощью специальных настроек в графической оболочке ОС. Для этого необходимо зайти в файловый менеджер и выбрать опцию «+Другие места»:
- Внизу, в строке «Подключиться к серверу», выбрать протокол SSH, ввести адрес вашего сервера в формате: ssh://X.X.X.X;
- В появившемся диалоговом окне ввести данные для доступа на сервер (имя пользователя и пароль);
- Нажать кнопку «Подключиться».

После успешного подключения, вам будет доступен удаленный сервер в виде еще одного диска вашей файловой системы. Правда, при каждой перезагрузке ОС, для доступа к нему нужно будет вводить логин и пароль. В удаленной папке теперь можно работать с конкретным файлом таким же образом, как и на вашем локальном компьютере. При необходимости, размонтировать диск можно опцией «Размонтировать» в меню.

5. Подключение удаленной файловой системы на постоянной основе
В некоторых случаях, удобный вариант — это монтирование удаленной папки на постоянной основе, т.е. чтобы при каждой загрузке ОС, она была уже подключена и готова к работе. Все настройки требуется проводить под пользователем root, для входа с правами root, выполним:
sudo –i
На следующем этапе вам необходимо сгенерировать пару SSH-ключей (см. инструкцию выше) и сохранить их в папке /root/.ssh/id_rsa. После этого следует выполнить тестовую проверку монтирования:
sshfs 194.58.121.225:/ /mnt/sample5
Если в ручном режиме монтирование удалось, размонтируем удаленную папку:
umount /mnt/sample5
Сейчас приступим к редактированию файла /etc/fstab с помощью редакторов Nano или Vim:
nano /etc/fstab
Впишем в самом конце файла следующую строку (приведен базовый синтаксис команды):
[email protected]:/ /mnt/sample5 fuse.sshfs defaults 0 0

Затем потребуется проверить, происходит ли монтирование из файла /etc/fstab:
mount –av

Если подключение удаленной папки прошло успешно, то опять размонтируем ее и выполним перезагрузку системы. После перезагрузки нужно проверить точку монтирования командой:
df -h | grep mnt

Стоит отметить, что основной синтаксис вышеприведенной команды работает только для пользователя с правами root. В ОС Linux не рекомендуется постоянно работать под root по соображениям безопасности. Поэтому лучше сразу настроить /etc/fstab таким образом, чтобы любой пользователь смог работать с удаленной директорией на постоянной основе.
В таком случае, вам стоит прописать команду в /etc/fstab с дополнительными параметрами:
[email protected]:/ /mnt/sample5 fuse.sshfs noauto,x-systemd.automount,_netdev,user,idmap=user,follow_symlinks, IdentityFile=/root/.ssh/id_rsa,allow_other,default_permissions,uid=1000,gid=1000 0 0
Параметр _netdev обозначает, что будет подключено именно сетевое устройство.
IdentityFile — должен содержать полный путь к файлу иначе столкнетесь с ошибкой read: Connection reset by peer
Примечание: Если для вашей версии ОС Линукс не работает автомонтирование ни с основным синтаксисом команды, ни с параметрами, приведенными выше, то вам стоит уточнить дополнительные параметры в рабочей документации к вашим версиям ОС.
Частые проблемы при использовании SSHFS
SSHFS просто настраивается и удобен в использовании. Однако, встречаются и технические проблемы при настройке sshfs и в процессе работы с ним. Перечислим наиболее распространенные:
- Качество канала и скорость соединения. Даже при небольших сбоях, могут происходить зависания, в результате чего удаленная папка будет недоступна и размонтировать ее с помощью команд будет невозможно. В этом случае, может помочь только перезагрузка ОС.
- Проблемы с информационной безопасностью. Несмотря на использование безопасного протокола SSH, все равно могут появиться уязвимости и угрозы ИБ.
- Проблемы в настройке SSHFS под Linux на постоянной основе. У пользователей, как правило, различные версии и разновидности ОС Линукс, поэтому команды для прописывания в файле /etc/fstab не всегда правильно работают у всех пользователей, у некоторых они требуют прописывания дополнительных параметров и настроек.