• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
+380 (44) 364 05 71

Что такое 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

 

Установка пакета sshfs

2. Монтирование удаленной файловой системы в каталог на локальной машине

Создание каталога для монтирования

На следующем этапе, создадим точку монтирования на нашем компьютере. Именно в эту папку мы будем монтировать удаленную файловую систему.

 

sudo mkdir /mnt/sample5

 

Создание каталога для монтирования

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

Пустой каталог

Подключение удаленной файловой системы

Следующий шаг — подключение удаленной директории в каталог /mnt/sample5. Покажем на примере корневого раздела (можно смонтировать и отдельную удаленную папку), выполним команду:

 

sudo sshfs root@X.X.X.X:/ /mnt/sample5 -o allow_other,default_permissions

 

где root — логин для доступа на удаленный сервер, X.X.X.X — IP адрес сервера.

Эти данные вам должен сообщить ваш провайдер, например FREEhost (после заказа услуги аренды VPS). Затем потребуется ввести пароль доступа к удаленному серверу (он будет вам предоставлен в информационном письме от хостинговой компании FREEhost). Соединение с сервером установлено, и удаленная файловая система смонтирована в локальную папку mnt/sample5, см. скриншот:

Удаленная файловая система смонтирована в папке 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. Для дополнительной безопасности ключа будет предложено ввести кодовое слово, если эта опция вам не нужна, смело пропускайте данный шаг. На скриншоте ниже показан процесс генерации ключей в папку «по умолчанию», где они будут сохранены.

Создание пары SSH-ключей

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

 

cat ~/.ssh/id_rsa.pub

 

Файл с публичным ключом

Для добавления ключа на удаленный сервер выполните следующую команду:

 

ssh-copy-id root@X.X.X.X

 

В итоге, ваш ключ успешно добавлен на сервер. Проверить подключение к удаленному серверу с помощью SSH-ключа можно будет таким образом:

 

ssh root@X.X.X.X

 

Подключение к серверу без пароля

Примечание: Под 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.

Монтирование удаленной папки с авторизацией на сервере по SSH-ключу

Результат монтирования можно увидеть в локальной папке /mnt/sample5 или проверить точку монтирования, как мы это делали в предыдущих пунктах нашей статьи.

4. Самый простой способ монтирования удаленной файловой системы

Если у вас мало опыта работы с терминалом Линукс, то подключить удаленный сервер можно с помощью специальных настроек в графической оболочке ОС. Для этого необходимо зайти в файловый менеджер и выбрать опцию «+Другие места»:

  • Внизу, в строке «Подключиться к серверу», выбрать протокол SSH, ввести адрес вашего сервера в формате: ssh://X.X.X.X;
  • В появившемся диалоговом окне ввести данные для доступа на сервер (имя пользователя и пароль);
  • Нажать кнопку «Подключиться».

Настройки для подключения удаленной рабочей папки по SSH

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

Удаленный сервер подключен как обычный диск

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

 

Впишем в самом конце файла следующую строку (приведен базовый синтаксис команды):

 

root@194.58.121.225:/ /mnt/sample5 fuse.sshfs defaults 0 0

 

Редактирование файла /etc/fstab

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

 

mount –av

 

Рис.13 Проверка монтирования из файла /etc/fstab

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

 

df -h | grep mnt

 

Проверка точки монтирования

Стоит отметить, что основной синтаксис вышеприведенной команды работает только для пользователя с правами root. В ОС Linux не рекомендуется постоянно работать под root по соображениям безопасности. Поэтому лучше сразу настроить /etc/fstab таким образом, чтобы любой пользователь смог работать с удаленной директорией на постоянной основе.
В таком случае, вам стоит прописать команду в /etc/fstab с дополнительными параметрами:

 

root@194.58.121.225:/ /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 обозначает, что будет подключено именно сетевое устройство.

Примечание: Если для вашей версии ОС Линукс не работает автомонтирование ни с основным синтаксисом команды, ни с параметрами, приведенными выше, то вам стоит уточнить дополнительные параметры в рабочей документации к вашим версиям ОС.

Как настроить SSHFS под Windows

Подключить удаленную папку по sshfs возможно и под ОС Windows, правда с помощью специальных программ и утилит. На специализированных форумах можно встретить рекомендации по использованию утилиты win-sshfs вместе с библиотеками Docan. Однако, эта утилита не всегда совместима с новыми версиями библиотек, может нестабильно работать под Windows 10. Поэтому лучше поискать более удобные альтернативы. Такой программой является ExpanDrive, после скачивания утилиты с сайта разработчика, установите ее под Windows 10, запустите и выполните простые настройки:

  • В меню "ExpanDrive" выберите пункт "New Connection", затем SSH (SFTP);
  • В открывшемся окне, заполните данные доступа к вашему удаленному серверу (логин, IP-адрес сервера, пароль к серверу, номер порта и др.);
  • Выберите букву для обозначения удаленного диска в вашей файловой системе и его название (опционально). По умолчанию — это будет диск Z:
  • Отметьте опцию "Automatically Mount as Drive", теперь при каждой перезагрузке ОС удаленная файловая система будет монтироваться автоматически, как еще один логический диск.
  • Нажмите кнопку "Save", после соединения с сервером ваш удаленный диск будет подключен.

Настройки программы ExpanDrive

Монтирование удаленной файловой системы в ОС Windows 10

Работа с удаленным диском Z: под Windows 10

Частые проблемы при использовании SSHFS

SSHFS просто настраивается и удобен в использовании. Однако, встречаются и технические проблемы при настройке sshfs и в процессе работы с ним. Перечислим наиболее распространенные:

  1. Качество канала и скорость соединения. Даже при небольших сбоях, могут происходить зависания, в результате чего удаленная папка будет недоступна и размонтировать ее с помощью команд будет невозможно. В этом случае, может помочь только перезагрузка ОС.
  2. Проблемы с информационной безопасностью. Несмотря на использование безопасного протокола SSH, все равно могут появиться уязвимости и угрозы ИБ.
  3. Проблемы в настройке SSHFS под Linux на постоянной основе. У пользователей, как правило, различные версии и разновидности ОС Линукс, поэтому команды для прописывания в файле /etc/fstab не всегда правильно работают у всех пользователей, у некоторых они требуют прописывания дополнительных параметров и настроек.

Вместо выводов

SSHFS хорошее решение, если Вам нужно быстро и относительно не сложно реализовать постоянный доступ к файлам на удаленном сервере. Это удобное решение для веб-разработчиков, для совместной работы с файлами или если вы работаете удаленно. В зависимости от объема данных, которые будут храниться на сервере, под такую задачу можно использовать виртуальный сервер или арендовать выделенный сервер.

Специалисты поддержки FREEhost.UA помогут с настройкой, если опыта в администрировании серверов у вас недостаточно.

Дата: 19.10.2020
Автор: Владислав
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
Спасибо, что выбираете FREEhost.UA