Сетевая файловая система SSHFS

From DD-WRT Wiki

Jump to: navigation, search


Contents


[edit] Введение

Sshfs - это сетевая файловая система, такая как NFS или Samba. Из Википедии:

SSHFS (Secure SHell FileSystem) - это файловая система для Linux (и других операционных систем с реализацией FUSE, например Mac OS X или FreeBSD), способная работать с файлами на удаленном компьютере, используя только безопасную оболочку secure shell на удаленном компьютере. На локальном компьютере, где смонтирован SSHFS, реализация использует модуль ядра FUSE (Файловая система в пользовательском пространстве). Практический эффект этого заключается в том, что конечный пользователь может беспрепятственно взаимодействовать с удаленными файлами, которые надежно обслуживаются по SSH, как если бы они были локальными файлами на его / ее компьютере. На удаленном компьютере используется подсистема SFTP.

[edit] Требования

Поскольку Dropbear (SSH-сервер по умолчанию), очевидно, не поддерживает SSHFS, вам нужно будет установить и запустить OpenSSH. Это в свою очередь требует Optware. Очевидно, что вы должны иметь диск, подключенный к вашему маршрутизатору, поэтому необходим маршрутизатор с USB-портом.

Примечание от Manuel: мне удалось использовать SSHFS с SSH по умолчанию, установив пакет "openssh-sftp-server" и передав путь к SFTP-серверу в качестве параметра командной строки "-o sftp_server=/opt/libexec/sftp-server" в SSHFS.

[edit] Преимущества и недостатки

По сравнению с более распространенными сетевыми файловыми системами, такими как NFS и Samba, SSHFS более ограничена по объему, особенно с точки зрения ограничения доступа: для получения доступа вам понадобится учетная запись и пароль на сервере, а затем вы получите доступ в какие угодно каталоги, к которым пользователь на сервере имеет доступ при подключении по SSH. Поскольку большинство пользователей DD-WRT, скорее всего, будут иметь только учетную запись root, это делает SSHFS более пригодной для однопользовательских установок. Кроме того, имейте в виду, что OpenSSH намного более требователен к памяти, чем dropbear, поэтому проверьте командой 'top', если вы одновременно запускаете другие программы, интенсивно использующие память.

Преимущество SSHFS по сравнению с NFS и Samba заключаются в том, что отзывчивость гораздо ближе к локальным файловым системам, чем в любой другой из распространенных систем, и несколько более высокая скорость передачи (ваша может отличаться). Кроме того, она (по крайней мере, для меня) оказалась более стабильной без каких-либо настроек и отключений. Простота настройки SSHFS также может быть преимуществом, если вы видели изумительное количество параметров конфигурации Samba. Если вы знаете, как использовать SSH, вы знаете, как использовать SSHFS.

[edit] Инструкция

Сначала мы установим OpenSSH:

/opt/bin/ipkg-opt install openssh

Чтобы избежать конфликтов c сетевым портом 22 (по умолчанию используется для SSH), нам нужно сначала остановить службу dropbear. Мы будем использовать веб-интерфейс. Если вы в этот момент подключены к маршрутизатору по протоколу SSH, выйдите из системы. В разделе 'Services' отключите SSHd и включите Telnet, сохраните и примените настройки. Теперь, выполните подключение к маршрутизатору по протоколу Telnet.

telnet 192.168.1.1

и запустите OpenSSH:

/opt/etc/init.d/S40sshd

Выполните выход из системы и попытайтесь подключиться с локальной машины. Убедитесь, что у вас установлен пакет sshfs (в моей системе Arch Linux он просто устанавливает 'sshfs') и создайте локальную точку монтирования. В этом примере я подключил диск WD MyBook 500 Gb в каталог /mnt на маршрутизаторе (он называется SAM - вместо него можно использовать 192.168.1.1). Этот каталог, в свою очередь, будет смонтирован в /mnt/mack на моем ноутбуке:

sshfs <user>@<host name | host ip>:/<directory on router> <local mount point>

sshfs root@SAM:/mnt /mnt/mack

Вас спросят о вашем пароле (если у вас не используется какой-либо автоматический вход в систему), и каталог должен быть доступен вам в локальной точке монтирования.

В настройке fstab то же действие выглядит так:

sshfs#root@SAM:/mnt   /mnt/mack   fuse   user,auto,noatime,allow_other    0 0

Обратите внимание, что "sshfs#" - это не комментарий, а способ сообщить fstab, что это за файловая система. Если вы не используете allow_other, ваш обычный пользователь даже не сможет увидеть точку монтирования, не говоря уже о ее просмотре.

Чтобы запись в fstab работала, вам нужно настроить автоматический вход SSH для локального пользователя root (так как монтирование будет выполнять пользователь root). См. http://magicmonster.com/kb/net/ssh/auto_login.html для получения информации о том, как это сделать. В отличие от большинства других сетевых файловых систем, у SSHFS нет способа передачи информации о пароле в опциях.

Вот и все. Больше не надо возиться с экспортом NFS и файлами smb.conf. Ваш обычный локальный пользователь теперь будет иметь права root-пользователя на монтирование, поэтому копирование, удаление и перемещение файлов такое же простое, как в вашем домашнем каталоге. Наслаждайтесь.

[edit] Подсказки и предостережения

Если подсистема SFTP не работает, то при попытке смонтировать каталог через SSHFS произойдет ошибка "subsystem request failed on channel 0". Существует неверная конфигурация, препятствующая загрузке внешнего сервера SFTP, или на маршрутизаторе не найден модуль.

Чтобы обойти эту ситуацию, вы можете использовать внутрипроцессный SFTP-сервер, изменив файл конфигурации "sshd_config", расположенный в "/jffs/opt/etc/openssh".

cd /jffs/opt/etc/openssh
vi sshd_config

Найдите строку Subsystem, закомментируйте запись внешнего SFTP-сервера и создайте новую, используя вместо этого internal-sftp.

#Subsystem   sftp    /opt/libexec/sftp-server
Subsystem     sftp     internal-sftp

Сохраните файл с помощью :x, перезагрузитесь и попробуйте смонтировать SSHFS, чтобы убедиться, что система работает правильно.