Монтирование удалённых каталогов с помощью SFTP
Часто бывает нужен доступ к какой либо папке на сервере, и как по закону подлости на нём не оказывается хотя бы ftp сервера в виду того, что посчитали его ненужным во время настройки. Что ж. Можно потратить немного времени на его настройку, а можно сделать более лаконично, просто и безопасно монтируя удалённые каталоги с помощью sshfs. Тем более что от сервера требуется только наличие настроенного, и рабочего ssh сервера.
Для этого нам понадобится fuse, и собственно сам sshfs.
У меня Debian Sid, и пакеты называются именно так. В других дистрибутивах может не быть пакета fuse-utils, но будет fuse. Он и нужен. Пакет sshfs обычно одинаково назвывается во всех дистрибутивах.
Теперь загрузим модуль fuse:
Если у Вас к примеру archlinux, то не забудьте добавить модуль fuse в секцию MODULES в /etc/rc.conf чтобы он загрузился при следующем старте системы. Так же и в других дистрибутивах где пакетный менеджер не cделает это за Вас, следует добавить модуль в автозагрузку. Как это сделать зависит от конкретного дистрибутива.
Теперь необходимо добавить пользователя от котого планируется использование sshfs в группу fuse, и предоставить группе fuse соответствующие права:
Теперь для применения прав следует перезайти данным пользователем в систему, или «перелогиниться» в текущем терминале:
Вместо следует поставить логин к ssh сервера, и вместо соответственно адрес.
Монтировать следует от обычного пользователя, и необходимо проверить, чтобы на директорию в которую монтируем, были соответствующие права.
Отмонтировать директорию следует с помощью команды fusermount:
Монтирование удаленной директории с помощью sshfs. Часть первая
SSHFS (Secure Shell FileSystem) — это клиент, который позволяет монтировать удаленную файловую систему и работать с файлами этой системы на локальной машине с использованием протокола SFTP. SFTP (SSH File Transfer Protocol) — это безопасный протокол передачи файлов, который обеспечивает доступ, передачу и управление файлами через протокол Secure Shell. SSHFS поставляется со встроенным модулем ядра FUSE (файловая система в пространстве пользователей), который позволяет любым непривилегированным пользователям создавать свою файловую систему без изменения кода ядра.
Прежде, чем что-то делать — убедитесь, что в файле конфигурации OpenSSH-сервера есть строка
Монтирование
Сначала установим пакет sshfs :
Создадим каталог для монтирования удаленной файловой системы:
Смонтируем в этот каталог директорию /var/www веб-сервера:
Теперь посмотрим содержимое каталога /home/evgeniy/var-www/host1.loc :

Права доступа

Так что давайте размонтируем удаленную файловую систему и смонтируем еще раз:

Два скрипта
Чтобы облегчить себе жизнь, создадим два маленьких bash-скрипта, которые позволят быстро смонтировать и размонтировать удаленную файловую систему:
Полезные опции
Опция reconnect позволяет автоматически восстанавливать соединие в случае разрыва:
Опция password_stdin позволяет получать пароль пользователя из входного потока stdin :
Опция delay_connect — не монтировать удаленную директорию немедленно, а ждать момента первого обращения к файлам:
Опция idmap
Посмотрим владельца файлов на сервере в директории /var/www/ :
Смонтируем удаленную файловую систему без опции idmap и посмотрим список файлов в директории /home/evgeniy/var-www/ :
Смонтируем удаленную файловую систему с опцией idmap и посмотрим список файлов в директории /home/evgeniy/var-www/ :
Монтирование удалённой папки
Как примонтировать папку по sftp (sshfs)?
Рассмотрим вариант монтирование удаленной директории с использованием протокола SSH File Transfer Protocol (SFTP) настройка под хостинг Apache.
Отмонтируется удаленный ресурс командой fusermount:
Автоподключение и перемонтирование удаленных папок. Для этого есть несколько вариантов:
autofs
Запустим демон afuse, кторый будет отслеживать все обращения к директории
После чего все обращения к файлам и папкам в папке
/sshfs/ будут вызывать монтирование соответствующей папки в
/sshfs/. После чего обращение пойдет дальше на удаленный хост. Самое главное для нас — все происходит абсолютно прозрачно при первом обращении к нужной папке из любой программы.
/sshfs/tmpvar@foobarhost.com вначале малость потормозит, потом покажет содержимое корневой папки / сервера foobarhost.com. Конечно, не всегда удобно писать полный адрес и параметры доступа к серверу tmpvar@foobarhost.com:22, поэтому мы их перенесем в настройки доступа ssh.
Теперь мы можем обращаться к нашему серверу по короткому имени fs как в ssh, так и в sshfs:
/sshfs/fs # смотрим корневую папку сервера.
Если вы монтите папку первый раз, то у вас появится окошко ввода пароля для доступа к указанному серверу. После того как соединение установлено, окно больше не будет вас докучать. Как вы уже поняли — можно легко сказать окну не вылезать — сделав авторизацию на сервер по ключу.
Как использовать SSHFS для монтирования удаленных каталогов через SSH
How to use SSHFS to Mount Remote Directories over SSH
Из этого руководства вы узнаете, как установить клиент SSHFS в Linux, macOS и Windows и как смонтировать удаленный каталог.
По сравнению с другими протоколами сетевой файловой системы, такими как NFS и Samba, преимущество SSHFS заключается в том, что он не требует какой-либо дополнительной настройки на стороне сервера. Для использования SSHFS вам нужен только SSH-доступ к удаленному серверу.
Установка SSHFS
Пакеты SSHFS доступны для всех основных операционных систем, и установка довольно проста.
Установка SSHFS в Ubuntu и Debian
SSHFS доступен из репозиториев Ubuntu и Debian по умолчанию. Обновите индекс пакетов и установите клиент sshfs, набрав:
Установка SSHFS на CentOS
В CentOS и других производных Red Hat для установки sshfs выполните следующую команду:
Установка SSHFS на macOS
Пользователи macOS могут установить клиент SSHFS, загрузив пакеты FUSE и SSHFS с сайта osxfuse или через Homebrew:
Установка SSHFS в Windows
Пользователям Windows необходимо установить два пакета, WinFsp и SSHFS-Win.
Монтирование удаленной файловой системы
Следующие инструкции применимы для всех дистрибутивов Linux и macOS.
Чтобы смонтировать удаленный каталог, пользователь SSH должен иметь доступ к нему. Команда монтирования SSHFS имеет следующий вид:
Команда sshfs прочитает файл конфигурации SSH и будет использовать настройки для каждого хоста. Если удаленный каталог не указан, по умолчанию используется домашний каталог удаленного пользователя.
Например, чтобы смонтировать домашний каталог пользователя с именем «linuxize» на удаленном хосте с IP-адресом «192.168.121.121», сначала создайте каталог, который будет служить точкой монтирования, это может быть любое местоположение:
Затем используйте команду sshfs для монтирования удаленного каталога:
Теперь вы можете взаимодействовать с каталогами и файлами, расположенными на удаленном сервере, так же, как и с локальными файлами. Например, вы можете редактировать, удалять, переименовывать или создавать новые файлы и каталоги.
Если вы хотите постоянно смонтировать удаленный каталог, вам нужно отредактировать /etc/fstab файл локального компьютера и добавить новую запись о монтировании. Таким образом, когда ваша система загружается, она автоматически монтирует удаленный каталог.
При создании постоянного монтирования убедитесь, что вы можете подключить удаленный хост с использованием аутентификации на основе ключа SSH.
Монтирование удаленной файловой системы в Windows
Пользователи Windows могут использовать проводник Windows для сопоставления сетевого диска с удаленным каталогом на сервере SSH.
Откройте проводник Windows, щелкните правой кнопкой мыши «Этот компьютер» и выберите «Подключить сетевой диск». Выберите диск для монтирования и в поле «Папка» введите удаленного пользователя, сервер и путь в следующем формате:
Размонтирование удаленной файловой системы
Чтобы отсоединить смонтированную файловую систему, используйте команду umount или, fusermount а затем каталог, в котором она была смонтирована (точка монтирования):
Вывод
Из этого руководства вы узнали, как использовать SSHFS для монтирования удаленного каталога через SSH. Это может быть полезно, когда вы хотите взаимодействовать с удаленными файлами с помощью приложений на локальном компьютере.
Для получения полного списка опций sshfs введите man sshfs свой терминал.
Вы также можете ограничить доступ пользователей к их домашнему каталогу, настроив среду SFTP Chroot Jail и изменив порт SSH по умолчанию, чтобы добавить дополнительный уровень безопасности вашему серверу.
Как примонтировать удаленную sftp папку в Linux
Привет. Сегодня я покажу вам довольно интересную, и в очень многих случаях, очень полезную штуку. Я покажу, как можно примонтировать в локальную систему удаленную папку, используя только ssh, точнее sftp доступ, без использования samba, nfs и прочих прелестей.
Думаю смысла особого говорить где это может пригодится нет, так что сразу покажу как это дело можно реализовать. Делается это совсем не сложно.
Для начала необходимо установить sshfs, например в Ubuntu (все команды выполняются от rootа):
Для того, что бы примонтировать удаленную папку:
Соответсвенно /home/sanglyb — удаленная пака, /mnt — папка, куда нужно примонтировать удаленную папку.
Если используются ключи для авторизации, то команда будет иметь вид:
Так же можно сделать, что бы sshfs автоматически монтировал папку, для этого в файл /etc/fstab нужно добавить строчку:
sshfs#[email protected]:/home/sanglyb /mnt fuse defaults,idmap=user,port=22,allow_other,reconnect,_netdev,users,identityfile=/root/.ssh/id_rsa 0 0
После чего, перезагрузить сервер, либо выполнить команду:
Для того что бы отмонтировать папку нужно выполнить команду:
Возможно у вас возникнет ошибка вида:
fuse: bad mount point `/mnt’: Transport endpoint is not connected
Для ее исправления можно воспользоваться командой:
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.

