Монтирование удаленной папки linux

Монтирование удаленной директории с помощью sshfs. Часть вторая

Опция allow_other

Сейчас доступ к директории /home/evgeniy/var-www/ имеет только пользователь evgeniy . Чтобы разрешить другим пользователям работать с файлами в этой директории, нужно использовать опцию allow_other :

По умолчанию это может делать только пользователь root . Чтобы разрешить другим пользователям применять эту опцию, редактируем файл /etc/fuse.conf :

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

Аутентификация по ключу

Давайте создадим пару ключей на клиенте и скопируем публичный ключ на сервер:

Проверяем, что теперь можем подключаться к серверу без ввода пароля:

И монтируем удаленную директорию уже без ввода пароля:

Монтирование при загрузке

Если есть необходимость автоматически монтировать удаленную директорию при загрузке системы, то есть два пути. Первый — отредактировать файл /etc/fstab и добавить новую запись о монтировании. Второй — создать новый unit-файл для системы инициализации systemd .

1. Редактируем файл /etc/fstab

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

Но, чтобы это заработало, должна быть настроена аутентификация по ключу на сервере. Мы это уже сделали, но монтирование файловых систем происходит от имени пользователя root . И файл ключа операционная система будет искать в директории /root/.ssh/ . А наш ключ рсположен в домашней директории пользователя evgeniy . Поэтому нужно явно указать путь:

Кроме того, нужно один раз подключиться к серверу от имени пользователя root — чтобы был создан файл /root/.ssh/known_hosts :

Здесь используется опция монтирования uid=1000 — это значит, что владельцем файлов на клиенте будет пользователь с идентификатором 1000, другими словами — пользователь evgeniy . Неважно, кто создает файл на клиенте — на сервере его владельцем будет пользователь developer , а на клиенте — пользователь evgeniy . По сути, мы получаем тот же эффект, как при использовании опции idmap=user .

Когда мы создаем на клиенте новый файл, на самом деле мы создаем файл на сервере от имени пользователя developer . Основная группа этого пользователя — www-data (см. здесь). Эта группа существует как на сервере, так и на клиенте (хотя на клиенте веб-сервер не установлен). И идентификатор этой группы равен 33 (на клиенте и на сервере установлена ОС Ubuntu). Так что можно не задавать опцию монтирования gid=идентификатор .

2. Создаем новый unit-файл

Здесь опять возможны два варианта — создать файл .service (который просто выполнит команду монтирования), либо файл .mount (который предназначен специально для монтирования файловых систем).

2.1. Создаем service-файл

Итак, создаем новый unit-файл:

Команда sshfs выполняется от имени пользователя evgeniy , поэтому нам не нужно указывать путь к файлу ключа. Если пользователь не указан, команда будет выполнена от имени пользователя root — в этом случае указываем путь к файлу ключа:

Если по каким-то причинам нельзя настроить аутентификацию по ключу, можно использовать утилиту sshpass . Опция -f для утилиты sshpass говорит о том, что пароль доступа к серверу сохранен в файле /home/evgeniy/server.pass .

Разумеется, утилиту sshpass надо предварительно установить. Если нет желания хранить пароль в отдельном файле, можно просто передать его прямо в команде монтирования:

Сообщаем системе про новый unit-файл:

Читайте также:  Что делать если компьютер пишет не удается запустить windows

Добавляем новую службу в автозагрузку:

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

2.2. Создаем mount-файл

Мне пришлось изменить имя директории для монтирования удаленной файловой системы с /home/evgeniy/var-www/ на /home/evgeniy/server/ , потому что имя unit-файла должно состоять из имен директорий, показывающих путь к точке монтирования, то есть вот так home-evgeniy-server.mount .

Если по каким-то причинам нельзя настроить аутентификацию по ключу, можно использовать пароль:

Сообщаем системе про новый unit-файл:

Добавляем новую службу в автозагрузку:

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

Посмотреть текущее состояние можно с помощью команды:

Источник

Как использовать SSHFS для монтирования удаленных каталогов через SSH

SSHFS (SSH Filesystem) — это клиент файловой системы на основе FUSE для монтирования удаленных каталогов через SSH-соединение. SSHFS использует протокол SFTP, который является подсистемой SSH и включен по умолчанию на большинстве серверов SSH.

По сравнению с другими протоколами сетевой файловой системы, такими как NFS и Samba, преимущество SSHFS состоит в том, что он не требует дополнительной настройки на стороне сервера. Чтобы использовать SSHFS, вам нужен только SSH-доступ к удаленному серверу.

Поскольку SSHFS использует SFTP , все передаваемые данные между сервером и клиентом должны быть зашифрованы и расшифрованы. Это приводит к небольшому снижению производительности по сравнению с NFS и более высокой загрузке ЦП на клиенте и сервере.

Из этого туториала Вы узнаете, как установить клиент SSHFS в Linux, macOS и Windows и как смонтировать удаленный каталог.

Установка 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 для монтирования удаленного каталога:

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

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

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

Чтобы смонтировать удаленный каталог через SSHFS из /etc/fstab , используйте fuse.sshfs в качестве типа файловой системы.

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

Читайте также:  Check nvidia drivers linux

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

Пользователи Windows могут использовать проводник Windows, чтобы подключить сетевой диск к удаленному каталогу на SSH-сервере.

Откройте проводник Windows, щелкните правой кнопкой мыши «Этот компьютер» и выберите «Подключить сетевой диск». Выберите диск для монтирования и в поле «Папка» введите удаленного пользователя, сервер и путь в следующем формате:

На момент написания этой статьи SSHFS-Win не поддерживает аутентификацию на основе ключей, поэтому удаленный сервер SSH должен быть настроен для принятия аутентификации на основе пароля.

Для получения более подробной информации обратитесь к руководству по SSHFS-Win .

Отключение удаленной файловой системы

Чтобы отсоединить смонтированную файловую систему, используйте команду umount или fusermount после которой fusermount каталог, в котором она была смонтирована (точка монтирования):

Выводы

В этом руководстве вы узнали, как использовать SSHFS для монтирования удаленного каталога через SSH. Это может быть полезно, если вы хотите взаимодействовать с удаленными файлами с помощью приложений на локальном компьютере.

Чтобы получить полный список опций sshfs, введите в терминале man sshfs .

Вы также можете ограничить доступ пользователей к их домашнему каталогу, настроив среду SFTP Chroot Jail и изменив порт SSH по умолчанию, чтобы добавить дополнительный уровень безопасности на ваш сервер.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Монтирование сетевой папки в Linux

В одной из прошлых статей мы рассматривали как настраивать сетевые папки в Linux с помощью NFS. Если в Windows используется для этих целей Samba, то в Linux принято организовывать общие папки с помощью сетевой файловой системы NFS.

В этой статье мы поговорим о том как монтировать такие папки вручную, а также как настроить их монтирование при обращении с помощью autofs. Так вы будете экономить трафик между серверами и получите неплохую производительность.

Монтирование сетевой папки в Linux

Для того чтобы примонтировать сетевую папку в системе должен быть установлен пакет nfs-commons. В Ubuntu его можно установить такой командой:

sudo apt install nfs-common

Затем можно выполнять монтирование с помощью обычной команды mount, которой надо передать адрес сервера NFS и путь к папке в файловой системе сервера. Например, чтобы смонтировать папку /var/nfs выполните:

sudo mount ip_адрес:/var/nfs /mnt

Никакой авторизации в NFS нет, поддерживается только ограничение доступа по IP адресу, поэтому монтирование должно пройти успешно. Если статическое монтирование работает хорошо, можно переходить к настройке autofs. Не забудьте размонтировать сетевую папку:

sudo umount /mnt

Сначала нужно установить этот сервис. Для этого в Ubuntu выполните команду:

sudo apt install autofs

Все настройки сетевых папок, которые надо монтировать находятся в файле /etc/auto.master. Каждая строчка представляет из себя отдельную папку и имеет такой синтаксис:

/точка/монтирования /файл/с/карты —timeout=значение

Здесь файл карты, обычно это /etc/auto.misc — файл в котором более подробно описано что и куда надо монтировать. Синтаксис одной записи в файле /etc/auto.misc такой:

/точка/монтирования опции_монтирования ip_адрес:/путь/к/сетевой/папке

Для примера будем монтировать ту же сетевую папку /var/nfs на сервере 185.117.155.209 в локальную папку /mnt. В файл /etc/auto.master надо добавить такую строчку:

sudo vi /etc/auto.master

/mnt /etc/auto.nfs —timeout=100

Здесь мы сообщаем, что общая папка монтирования для всех ресурсов, описанных в файле /etc/auto.nfs — /mnt и если к ресурсу не обращаются на протяжении 100 секунд, то её следует размонтировать. Далее надо добавить описание монтирования в файл /etc/auto.nfs:

sudo vi /etc/auto.nfs

share -fstype=nfs4,rw 185.117.155.209:/var/nfs

Здесь — share это точка монтирования нашей сетевой папки в папке /mnt, затем идут опции монтирования, а потом адрес сервера и путь к папке на удалённой машине. Далее надо перезапустить сервис autofs:

sudo systemctl restart autofs

Затем можно попытаться обратиться к этой папке и она автоматически смонтируется:

Читайте также:  Установка windows hp pavilion dv6000

Как видите, всё достаточно просто. Так и выполняется автоматическое монтирование сетевых папок в Linux. Но чтобы у вас появилась возможность создавать файлы в этой папке, надо чтобы сервер NFS был правильно настроен. Об этом смотрите предыдущую статью про настройку NFS.

Источник

Как примонтировать удаленную sftp папку в Linux

Привет. Сегодня я покажу вам довольно интересную, и в очень многих случаях, очень полезную штуку. Я покажу, как можно примонтировать в локальную систему удаленную папку, используя только ssh, точнее sftp доступ, без использования samba, nfs и прочих прелестей.

Думаю смысла особого говорить где это может пригодится нет, так что сразу покажу как это дело можно реализовать. Делается это совсем не сложно.

Для начала необходимо установить sshfs, например в Ubuntu (все команды выполняются от rootа):

Для того, что бы примонтировать удаленную папку:

Соответсвенно /home/sanglyb — удаленная пака, /mnt — папка, куда нужно примонтировать удаленную папку.

Если используются ключи для авторизации, то команда будет иметь вид:

Если у вас используется не стандартный порт для ssh, то можно добавить ключ -p номер порта, т. е. Команда будет иметь вид:

Так же можно сделать, что бы 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

Для ее исправления можно воспользоваться командой:

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.

Источник

Монтируем удаленную файловую систему через SSH.

Во время работы часто приходится работать с удаленными файлами, часто через ssh. Gnome позволяет подключиться и работать с данными с помощью утилиты Places->Connect to Server, но, к сожалению, таким образом могут работать не все программы… Vim, например, а так как это основной мой редактор — я искал способ сделать это. И нашел 🙂

Все, что написано дальше — касается Linux, в частности Ubuntu Linux.
Итак, способ: смонтировать удаленую систему так же, как вы монтируете локальные диски. Сделать такое возможно с поомщью утилиты sshfs.
Для начала надо ее установить вместе с несколькими зависимостями:

$sudo apt-get install sshfs

Потом нужно добавить себя в группу пользователей fuse. Сделать это надо, потому что программа устанавливвается в системные папки, в которые обычным пользователям доступ запрещен. Так, добавляем себя в группу:

$sudo adduser fuse

Потом создаем директорию для монтирования, например, на рабочем столе:

Теперь надо выйти с терминала и зайти вновь. Все, теперь мы в группе fuse. Пробуем соединиться с сервером:

Если соединение идет не по ключу то, скорее всего, у вас появится запрос на введение пароля с удаленной машины.
Если же вы сразу не получили ошибку fusermount: fuse device not found, try ‘modprobe fuse’ first — проверяйте директорию, там должны появиться файлики :). Если же вылезла ошибка — значит модуль ядра fuse не загрузился автоматом, пробуем загрузить вручную:

$sudo modprobe fuse

Пробуем установить соединение еще раз.
Чтобы отмонтировать это все дело, надо выполнить следующее:

Чтобы каждый раз не вводить такую кучу комманд — создаем(если нету) и редактируем файл

/.bash_aliases, добавляя в конец такие строчки:

alias testssh=’sshfs user@example.com:/stuff

/Desktop/test_ssh’
alias testssh_umount=’fusermount -u

Теперь вы сможете монтировать удаленную машину командой testssh, а размонтировать — testssh_umount 🙂

Cпасибо за внимание!

ЗЫ Статью сначала перевел с английского на украинский, добавил немного своего и перевел на русский для Хабра 🙂

Источник

Оцените статью