Site icon 8HOST.COM

Монтирование удаленных файловых систем при помощи SSHFS

Как правило, обмен файлами с сервером – достаточно громоздкий процесс. Представьте себе разработку сценария использования, в код которого приложения вносятся с удаленной машины; при этом  сценарий нужно неоднократно подгружать на виртуальный сервер. Это может доставить немало хлопот.

К счастью, файловую систему VPS можно смонтировать на локальном компьютере; это позволяет быстро вносить изменения и использовать сервер как локальное хранилище. Данная статья продемонстрирует процесс монтирования удаленной файловой системы через SSH.

Установка SSHFS

В Ubuntu/Debian

SSHFS (или Secure SHell FileSystem) – это программное обеспечение на основе Linux, которое позволяет монтировать удаленные файловые системы на локальную машину по протоколу SSH.

В системах Ubuntu и Debian (а также подобных) эту программу можно установить при помощи apt-get:

sudo apt-get install sshfs

В Mac OSX

Система Mac OSX тоже позволяет использовать SSHFS . Для этого нужно загрузить FUSE и SSHFS с сайта osxfuse.

В Windows

Чтобы установить SSHFS в Windows, нужно загрузить последнюю версию пакета win-sshfs из Google Code Repository (прямую ссылку на файл можно найти ниже). Загрузив пакет, дважды щелкните для запуска программы установки. Возможно, будет предложено загрузить дополнительные файлы, в таком случае установщик скачает и установит .NET Framework 4.0.

https://win-sshfs.googlecode.com/files/win-sshfs-0.0.1.5-setup.exe

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

Нижеприведенные инструкции подходят для систем Ubuntu, Debian и OSX. Пользователи Windows могут найти инструкции в конце данного руководства.

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

sudo mkdir /mnt/droplet <--replace "droplet" whatever you prefer

Теперь можно использовать sshfs для монтирования удаленной файловой системы на локальную при помощи следующей команды. На этом этапе будет предложено ввести корневой пароль виртуального сервера.

sudo sshfs root@xxx.xxx.xxx.xxx:/ /mnt/droplet

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

sudo sshfs -o IdentityFile=~/.ssh/id_rsa root@xxx.xxx.xxx.xxx:/ /mnt/droplet

Теперь можно работать с файлами сервера, как будто они находятся на физическом устройстве, подключенном к локальной машине. Например, если перейти в каталог /mnt/droplet на локальной машине и создать в нем файл, этот файл появится на виртуальном сервере. Точно так же можно скопировать файлы в каталог /mnt/droplet, и они будут загружены на сервер в фоновом режиме.

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

Демонтирование удаленной файловой системы

Если точка монтирования (mount point) больше не нужна, можно демонтировать файловую систему при помощи команды:

sudo umount /mnt/droplet

Постоянное монтирование удаленной файловой системы

SSHFS позволяет сделать точки монтирования удаленных файловых систем перманентными (то есть, создавать точки монтирования, которые будут сохраняться даже после перезагрузки локальной машины и виртуального сервера). Для того, чтобы создать постоянную точку монтирования, нужно отредактировать файл /etc/fstab на локальной машине; благодаря этому файловая система будет монтироваться после перезагрузки автоматически.

Итак, отредактируйте файл /etc/fstab:

sudo nano /etc/fstab

В нижней части файла внесите следующую запись:

sshfs#root@xxx.xxx.xxx.xxx:/ /mnt/droplet

Сохраните изменения и при необходимости перезапустите систему.

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

Монтирование удаленной файловой системы Windows при помощи Win-SSHFS

После запуска программы win-sshfs появится графический интерфейс, который упростит процесс монтажа удаленной файловой системы.

  1. Нажмите кнопку Add в левом нижнем углу окна.
  2. Введите имя файловой системы в поле Drive Name.
  3. Введите IP сервера в поле Host.
  4. Укажите порт SSH (если порт не был изменен, оставьте значение 22).
  5. Укажите имя пользователя в поле Username (укажите root, если в системе нет дополнительных аккаунтов).
  6. Введите пароль SSH (имейте в виду: в Windows желательно использовать авторизацию при помощи пароля, а не с помощью ключей SSH).
  7. Укажите точку монтирования в поле Directory (введите /, чтобы смонтировать систему в root-каталог; аналогично, можно ввести /var/www или ~/, чтобы указать домашний каталог).
  8. Выберите обозначение дискового накопителя, которое Windows будет использовать для файловой системы сервера.
  9. Нажмите кнопку Mount, чтобы подключиться к серверу и смонтировать файловую систему.

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

Использование удаленной точки монтирования

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

Как правило, точку монтирования используют в случае, если на VPS размещен веб-сайт, который требует постоянного внесения изменений. Монтирование удаленной файловой системы на локальную позволяет запускать любой редактор кода, интерфейс IDE или текстовый редактор; все внесенные на локальном компьютере изменения будут сразу же отражены на виртуальном сервере.

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