Подключение и настройка SSHFS в Linux
Файловая система SSHFS (Secure Shell FileSystem) позволяет монтировать файловую систему удалённого сервера с помощью протокола SSH. Это может быть очень удобно, если вам надо передать на удалённый сервер много данных или скачать эти данные оттуда. Конечно, существует утилита scp, но иногда просматривать файловую систему в файловом менеджере намного удобнее.
В этой небольшой статье мы рассмотрим как выполняется подключение SSHFS в Linux, а также как настроить автоматическое монтирование этой файловой системы при загрузке.
Подключение SSHFS в Linux
Для работы файловой системы достаточно SSH доступа к удалённому серверу. На клиентской машине надо установить пакет sshfs. Если он не установлен, команда установки в Ubuntu будет выглядеть следующим образом:
Монтирование SSHFS выполняется с помощью одноимённой команды. Её синтаксис такой:
$ sshfs опции имя_пользователя @ адрес : /путь /точка/монтирования
Например, чтобы примонтировать удалённую файловую систему по адресу 192.168.56.103 от имени пользователя root достаточно выполнить:
sudo sshfs root@192.168.56.103:/ /mnt
Теперь вы сможете просмотреть содержимое файловой системы. Но здесь есть одно несколько минусов, во первых — не всегда удобно монтировать файловую систему от имени суперпользователя, а во вторых примонтированная файловая система будет доступна для чтения и записи только суперпользовтелю.
Чтобы получить возможность монтировать от имени обычного пользователя необходимо создать группу fuse:
Затем добавить текущего пользователя в эту группу:
sudo usermod -aG fuse $USER
После этого перелогиньтесь в системе, чтобы изменения применились. От имени обычного пользователя вы не сможете примонтировать sshfs в /mnt потому что у вас нет права записи в эту папку, создайте папку для монтирования в домашней папке:
Далее можно пытаться монтировать:
sshfs root@192.168.56.103:/ ~/mnt
Теперь вы можете использовать эту папку для того чтобы обмениваться файлами с сервером. Если надо чтобы и другие пользователи могли получать доступ к этой папке, надо использовать опцию allow_other. Она будет работать только если в файле /etc/fuse.conf присутствует опция user_allow_other. Добавьте её:
sshfs -o allow_other root@192.168.56.103:/ ~/mnt
Для того чтобы отмонтировать файловую систему используйте привычную команду umount:
Автоматическое монтирование SSHFS
Вы можете настроить автоматическое монтирование SSHFS в файле /etc/fstab. Для этого сначала вам придется создать SSH ключ и отправить его на удалённый сервер. Создайте новый ключ:
Затем передайте его на сервер:
ssh-copy-id -i ~/.ssh/id_dsa.pub root@192.168.56.103
Когда ключ будет загружен, будет достаточно передать утилите в опциях монтирования путь к ключу. Чтобы убедится, что всё работает выполните:
sshfs -o identityfile=~/.ssh/id_dsa.pub root@192.168.56.103:/ ~/mnt
Если всё работает, можно составить сточку конфигурации для /etc/fstab:
root@192.168.56.103:/ /mnt fuse.sshfs noauto,x-systemd.automount,_netdev,follow_symlinks,identityfile=/home/sergiy/.ssh/id_dsa,allow_other,default_permissions,reconnect 0 0
Путь к файлу ключа должен быть полным, поэтому замените имя пользователя на своё. Для того, чтобы не получать ошибок доступа при записи желательно чтобы имя пользователя на локальной машине и на удалённой совпадали. Или же, можно указать ID пользователя и группы владельца во время монтирования. Сначала посмотрите UID и GID текущего пользователя:
В данном случае, это 1000. Первая цифра — это UID, вторая — GID. Затем передайте их в опциях монтирования uid и gid:
root@192.168.56.103:/ /mnt fuse.sshfs uid=1000,gid=1000,noauto,x-systemd.automount,_netdev,follow_symlinks,identityfile=/home/sergiy/.ssh/id_dsa,allow_other,default_permissions,reconnect 0 0
Теперь всё должно работать.
Выводы
Теперь вы знаете как выполняется подключение и настройка SSHFS Linux. Как видите, это не очень сложно, но в то же время удобно для передачи большого количества файлов.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
sshfs — подключаем удаленные папки по ssh
Для того, чтобы на наш компьютер (Linux) подключить папку с удаленного сервера (Linux), можно использовать sshfs.
Установка простая, пример для CentOS ниже (для Ubuntu/Debian вроде так: apt-get install sshfs ).
Внимание! Все команды ниже выполняются на клиенте! Сервер вообще не в курсе, что вы что-то монтируете — для сервера вы просто заходите по ssh.
Например, на сервере 192.168.15.22 запущен sshd на порте 2113. Подключаться можно с именем пользователя vasya.
На этом удаленном сервере есть папка /home/vasya/docs.
На нашем компьютере создаем папку (например, /mnt/vasya_from_work), в которую будем подключать папку с сервера (/home/vasya/docs). Запускаем команду:
$ sshfs -p 2113 vasya@192.168.15.22:/home/vasya/docs/ /mnt/vasya_from_work/
При этом вы должны учитывать права доступа к содержимому папки. То, что не Васино в папке на сервере, вы не увидите в примонтированной папке на своем компьютере.
Если при попытке примонтировать папку появляются ошибки монтирования fuse (могут быть разными), то добавьте своего пользователя в группу fuse:
После этого надо выйти из Васи и снова войти в него (иначе usermod не подействует и под Васей вы не сможете, возможно, примонтировать удаленную папку).
Теперь вы можете без прав супер пользователя монтировать удаленные папки.
После того, как примонтировали диск, можете просмотреть список дисков:
$ df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/md2 ext4 478195440 221820192 232077632 49% / tmpfs tmpfs 1098248 0 1098248 0% /dev/shm /dev/md0 ext4 194177 115828 68113 63% /boot /dev/sdc1 ext4 961300808 183124744 729338076 21% /media/usb vasya@192.168.15.22:/home/vasya/docs/ fuse.sshfs 261854348 22606544 225939696 10% /mnt/vasya_from_work/
Другие пользователи вашим примонтированным «диском» воспользоваться не смогут.
$ fusermount -u /mnt/vasya_from_work/
Что еще? Можно настроить sshfs на автомонтирование через /etc/fstab. Наверное, это удобно кому-то. Мне это не нужно было и я не проверял. К тому же, не ясно, как эта штука себя ведет, если сеть была недоступна некоторое время. Для резервного копирования через ssh можно использовать rsync. Для доступа к файлам WinSCP или другие клиенты. Это просто еще один вариант как можно решать задачи по копированию файлов через ssh.
Авторизуйтесь для добавления комментариев!
Монтируем удаленную файловую систему через SSH.
Во время работы часто приходится работать с удаленными файлами, часто через ssh. Gnome позволяет подключиться и работать с данными с помощью утилиты Places->Connect to Server, но, к сожалению, таким образом могут работать не все программы… Vim, например, а так как это основной мой редактор — я искал способ сделать это. И нашел 🙂
Все, что написано дальше — касается Linux, в частности Ubuntu Linux.
Итак, способ: смонтировать удаленую систему так же, как вы монтируете локальные диски. Сделать такое возможно с поомщью утилиты sshfs.
Для начала надо ее установить вместе с несколькими зависимостями:
$sudo apt-get install sshfs
Потом нужно добавить себя в группу пользователей fuse. Сделать это надо, потому что программа устанавливвается в системные папки, в которые обычным пользователям доступ запрещен. Так, добавляем себя в группу:
Потом создаем директорию для монтирования, например, на рабочем столе:
Теперь надо выйти с терминала и зайти вновь. Все, теперь мы в группе fuse. Пробуем соединиться с сервером:
$sshfs user@example.com:/stuff ~/Desktop/test_ssh
Если соединение идет не по ключу то, скорее всего, у вас появится запрос на введение пароля с удаленной машины.
Если же вы сразу не получили ошибку fusermount: fuse device not found, try ‘modprobe fuse’ first — проверяйте директорию, там должны появиться файлики :). Если же вылезла ошибка — значит модуль ядра fuse не загрузился автоматом, пробуем загрузить вручную:
Пробуем установить соединение еще раз.
Чтобы отмонтировать это все дело, надо выполнить следующее:
$fusermount -u ~/Desktop/test_ssh
Чтобы каждый раз не вводить такую кучу комманд — создаем(если нету) и редактируем файл ~/.bash_aliases, добавляя в конец такие строчки:
alias testssh=’sshfs user@example.com:/stuff ~/Desktop/test_ssh’
alias testssh_umount=’fusermount -u ~/Desktop/test_ssh’
Теперь вы сможете монтировать удаленную машину командой testssh, а размонтировать — testssh_umount 🙂
ЗЫ Статью сначала перевел с английского на украинский, добавил немного своего и перевел на русский для Хабра 🙂