sshfs - это клиент SSH?, который позволяет смонтировать файловую систему (или папку) удаленного сервера в любую (существующую) папку локальной файловой системы вашего компьютера.

Вообще, для GNU/Linux хватает клиентов SSH. Однако все они ограничиваются тем, что позволяют производить только базовые операции с файлами: копирование, перенос, удаление.

На мой взгляд, sshfs - незаменимое средство для любого веб-программиста (работающего с GNU/Linux), превосходящее на голову все (испробованные мной) клиенты SSH. Только представьте себе: после подключения при помощи sshfs к удаленному серверу, вы можете работать с файлами на нем, как будто они расположены в вашей домашней папке. Соответственно, с ними можно производить любые операции, как с любыми другими файлами в вашей локальной файловой системе: копировать, редактировать, сравнивать при помощи Meld Diff Viewer или искать в них текст при помощи regexxer Search Tool. При этом все данные передаются зашифрованными. Ваши приложения даже не будут догадываться, что они работают с файлами, которые, может быть, находятся на другом конце света! Удобно, не так ли?

УСТАНОВКА

Клиент sshfs входит в дистрибутивы Ubuntu 7.10, 7.04 и дистрибутив Debian Etch. Думаю, что он есть и в предыдующих версиях Ubuntu/Debian (однако я не проверял). И наверняка sshfs будет включен во все последующие дистрибутивы Ubuntu/Debian.

Установка клиента sshfs элементарна, как и установка любого приложения из пакета для Ubuntu/Debian. sshfs можно установить при помощи менеджера пакетов Synaptic?, а можно набрать команду в терминале:

sudo apt-get install sshfs

НАСТРОЙКА

Вообще, после установки sshfs не требует настройки, однако одно действие все же нужно сделать: добавить вашего пользователя в группу fuse. Иначе при монтировании файловой системы удаленного сервера вы увидите ошибку:

fuse: failed to open /dev/fuse: Permission denied

Чтобы добавить пользователя в группу fuse, выполните в консоли команду:

sudo usermod -a -G fuse user

где user - логин вашего пользователя. После этого нужно перелогиниться, чтобы попасть в группу fuse.

Добавить своего пользователя в группу fuse можно также при помощи графической среды GNOME. Откройте меню System -> Administration -> Users and Groups. В появившемся окне со списком пользователей выберите своего пользователя и щелкните по кнопке Properties. В появившемся окне (Account Properties) откройте закладку User Privileges и поставьте галочку Allow user of fuse filesystems like LTSP Thin Client blockdevices. Сохраните изменения, нажав кнопку OK. Не забудьте перелогиниться, чтобы попасть в группу fuse.

ИСПОЛЬЗОВАНИЕ

Монтирование файловой системы удаленного сервера при помощи sshfs выполняется следующей командой:

sshfs -C -p 22 user@example.com:/ /home/user/mnt/example.com

Опция -C сообщает sshfs, чтобы он сжимал передаваемые данные, а опция -p задает номер рабочего порта. Номер порта можно опустить, если это стандартный порт SSH (22).

Обратите внимание, что папка /home/user/mnt/example.com, в которую монтируется удаленная файловая система, должна существовать.

Во время установки соединения sshfs спросит у вас пароль пользователя для подключения к серверу. Если имя пользователя и пароль указаны верно и нет проблем с доступом к папке /home/user/mnt/example.com, клиент sshfs не выдаст никаких сообщений после успешного монтирования ФС удаленного сервера.

Отмонтировать файловую систему удаленного сервера можно следующей командой:

fusermount -u /home/user/mnt/example.com

ПОЛЕЗНЫЙ СОВЕТ

Для более удобной работы с sshfs я использую свои скрипты Bash?. Они позволяют мне несколько упростить работу с sshfs. См. пример кода скрипта user@example.com.sh ниже.

#!/bin/bash

MOUNT_PATH=/home/user/mnt/example.com

if [ "$1" = "-u" ]; then
    fusermount -u -z $MOUNT_PATH
else
    sshfs -C user@example.com:/home/user/public_html $MOUNT_PATH
fi

Чтобы смонтировать файловую систему удаленного сервера в локальную папку /home/user/mnt/example.com, я запускаю скрипт user@example.com.sh без параметров, указываю пароль и работаю.

/home/user/mnt/user@example.com.sh

Когда нужно отключится, я запускаю скрипт с параметром -u и клиент sshfs немедленно рвет соединение с удаленным сервером.

/home/user/mnt/user@example.com.sh -u