Linux подключить сетевой диск ssh

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 не подействует и под Васей вы не сможете, возможно, примонтировать удаленную папку).

Теперь вы можете без прав супер пользователя монтировать удаленные папки.

После того, как примонтировали диск, можете просмотреть список дисков:

Другие пользователи вашим примонтированным «диском» воспользоваться не смогут.

$ fusermount -u /mnt/vasya_from_work/

Что еще? Можно настроить sshfs на автомонтирование через /etc/fstab. Наверное, это удобно кому-то. Мне это не нужно было и я не проверял. К тому же, не ясно, как эта штука себя ведет, если сеть была недоступна некоторое время. Для резервного копирования через ssh можно использовать rsync. Для доступа к файлам WinSCP или другие клиенты. Это просто еще один вариант как можно решать задачи по копированию файлов через ssh.

Источник

Как использовать 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 без пароля .

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

Читайте также:  Установил windows 10 пропал звук

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

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

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

Источник

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

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

В веб-разработке это требуется довольно часто. Иногда требуется просто скачивать/закачивать файлы на удаленный сервер, а иногда еще и выполнять какие-то команды.

Немного теории об SSH, FTP и SFTP

Для соединения с удаленными серверами и управления ими существует протокол — SSH, но не все знают, что у этого протокола есть расширение для передачи файлов. Да, да, по SSH можно передавать файлы прямо как с помощью старого доброго FTP, только гораздо надежнее!

Это расширение называется SFTP (не путать с FTPS, это разные вещи) и работает оно поверх SSH соединения. При этом на сервере не требуется устанавливать и настраивать дополнительное ПО для организации передачи файлов, как это было в случае с FTP. Настройки по умолчанию при установке SSH сервера (пакет openssh-server ) вполне рабочие. В качестве пользователей используются пользователи ОС.

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

Пожалуй, нужно еще ответить на вопрос, а зачем вообще использовать SFTP, ведь есть FTP, и зачем придумывать что-то еще?

FTP до сих пор довольно распространен, однако этот протокол менее быстр, менее функционален, менее защищен и менее надежен, он не имеет никаких преимуществ перед SFTP.

SFTP же, в свою очередь, детально проработан для работы с файлами, не имеет проблем с кодировками, файлы не теряются, не бьются, установленное соединение просто так не разрывается, и может оставаться активным неделями. Одним словом, в SFTP решены многие проблемы, которые есть у FTP.

Клиентское ПО для работы с SFTP

Большинство актуальных программ для работы с FTP поддерживают и SFTP. Например, FileZilla (Windows, macOS, Linux), Cyberduck (Windows, macOS), Xftp (Windows), Transmit (macOS).

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

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

Здесь, пожалуй, лучше начать с ПО для Linux. В Ubuntu (и скорее всего и в других дистрибутивах) можно примонтировать сетевой диск по SSH в стандартном файловом менеджере без установки какого-либо дополнительного ПО (естественно, пакет openssh-client должен быть установлен). Для этого нужно зайти в раздел «Other Locations» (актуально для версии 18.04, в старых версиях, по-моему, было как-то по-другому) и воспользоваться строкой «Connect to Server». Кстати, поддерживаются и другие протоколы.

Читайте также:  Системник не выключается windows выключился

Строка подключения выглядит следующим образом:

Также в Linux доступен пакет SSHFS, который работает в связке с пакетом Fuse, и позволяет монтировать SFTP соединения с помощью командной строки, в том числе автоматически при загрузке ОС.

Команда подключения будет примерно такой:

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

Для macOS также существует SSHFS, и своя реализация Fuse (FUSE for macOS), работают они так же, как и в Linux.

Однако для этой платформы существует и масса GUI программ (программ с графическим интерфейсом) для удобного управления монтированием:

  • Forklift
  • Mountain Duck
  • CloudMounter
  • ExpanDrive

Я поработал со всеми этими программами и некоторыми другими. Очень удобно, что можно сохранять настройки соединений, и в пару кликов монтировать файловые системы. Но у всех них есть важная особенность, которая в моем случае являлась существенным недостатком. Так или иначе, все эти программы безапелляционно кешировали переданные файлы. Функция, конечно, полезная, но для разработки нужна возможность и каждый раз получать «свежие» файлы, не из кеша, так как они могут часто меняться на сервере в процессе работы, например при сборке CSS из SASS. В некоторых случаях наблюдались и случаи порчи файлов, хотя, возможно, в актуальных версиях это уже могли исправить.

На Windows ситуация примерно такая же, есть несколько программ с собственными алгоритмами монтирования, например WebDrive и тот же Mountain Duck. У WebDrive даже есть функция настройки параметров кеширования, но, к сожалению, полностью оно все равно не отключается.

Существует и вполне рабочая версия порта SSHFS для этой платформы — WinSshFS. Именно на ней я остановился, когда работал на Windows.

На macOS и Ubuntu я пользовался SSHFS, заготавливал в специальных файлах команды для подключения и вызывал их по необходимости.

GUI для SSHFS

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

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

Это был новый интересный опыт для меня, так как десктопных приложений до этого я не разрабатывал. При поиске подходящего стека технологий я руководствовался желанием сделать программу для macOS и Linux (так как интерфейс командной строки SSHFS есть только для этих платформ), но впоследствии от поддержки Linux пришлось отказаться.

В итоге, выбор пал на платформу Electron, которая позволяла создавать приложения с некоторыми нативными функциями с помощью HTML/CSS/JS. C JavaScript мне часто приходилось иметь дело, и процесс разработки занял всего порядка двух дней. Еще примерно столько же понадобилось, чтобы разобраться с самим Electron и его возможностями.

Приложение SSHFS Mounter доступно на GitHub.

Работу с программой здесь я описывать не буду, все должно быть интуитивно понятно.

Кстати, одной из причин отказа от поддержки Linux, было отсутствие в Electron встроенной возможности использовать нативные элементы интерфейса ОС. В последних версиях macOS интерфейс остается более-менее одинаковым, и я постарался воспроизвести его подобие с помощью CSS, но для различных оконных интерфейсов Linux, да еще и различных тем оформления, этого было бы непросто добиться.

Также к архитектурным минусам Electron можно отнести:

  • большой размер приложения — порядка 50 Мб в сжатом виде, из которых код самого приложения занимает всего порядка 20 Кб в несжатом виде.
  • ограниченная поддержка работы с командной строкой, из-за чего невозможно обрабатывать какие-либо интерактивные запросы, например ввод пароля, парольной фразы или запроса на добавление сервера в доверенный список.

Несмотря на это, я пользовался SSHFS Mounter практически ежедневно в течение нескольких месяцев.

Однако то, что практически при каждом монтировании мне было необходимо запускать еще и обычную SSH сессию (для выполнения команд на сервере), а также периодическая потребность в похожем инструменте для Linux, сподвигли меня на разработку нового инструмента управления соединениями — для командной строки (CLI).

Менеджер SSHFS соединений для CLI

После недолгого анализа языков программирования для CLI приложений, выбор PHP стал окончательным. Во-первых — это мой основной язык программирования, а во-вторых, другие языки не давали каких-то особых преимуществ. Последние версии PHP имеют полноценную поддержку разработки для CLI.

Что ж, за работу!

Поддержка Linux на этот раз была одним из главных требований, наряду с macOS.

При проектировании приложения хотелось сделать его максимально простым в работе. В качестве формата файлов для хранения параметров соедиений был выбран YAML, как один из самых дружественных для редактирования человеком. Основная концепция программы — для выполнения основных команд от пользователя требуется набирать минимальное количество символов, как это сделано, например, в Git или Drush.

Разработка заняла порядка двух недель в относительно свободном режиме. При этом рабочий вариант был готов уже на второй день.

Читайте также:  Composite windows on linux

Приложение SSHFS Mount Tool (SMT) также доступно на GitHub.

До этого у меня уже был опыт разработки консольных приложений на PHP и node.js, но это были скрипты для личного или служебного пользования: конвертор проприетарного векторного формата в SVG, программа для сортировки и конвертации музыкального архива, различного рода инструменты для пакетной обработки изображений для интернет-магазинов. Но эти программы не были рассчитаны на других пользователей, не было практически никакой обработки ошибок, различных вариантов передачи параметров или справки.

В SMT же мне пришлось проектировать вполне себе полноценную архитектуру приложения, такой опыт был впервые, и насколько он успешен судить уже не мне.

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

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

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

Пример команды монтирования:

Соединения можно добавлять при помощи встроенного мастера (команда smt add ), либо редактируя файл конфигурации напрямую. Можно использовать глобальный файл конфигурации в папке пользователя, либо файл smt.yml в текущей папке.

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

Использования отдельных файлов конфигурации удобно, например, для хранения настроек соединения в папке проекта. Если запускать программу из этой папки, то будет использован находящийся в ней файл конфигурации.

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

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

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

Работая над программой, было прочитано множество материалов по способам работы с аргументами, вывода результатов, организации справки (команды help ). Были попытки использования сторонних библиотек, но в итоге их использование я счел оправданным только для работы с YAML форматом и отображения вывода в табличном виде. Обработка аргументов и генерация справки написаны с нуля. Возможно, использованные методы не самые оптимальные, и тут я был бы рад услышать конструктивную критику и предложения по улучшению.

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

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

Обновление

По совету и не без помощи @yozk (Ivan Ch), я полностью переписал SMT на базе компонента Symfony/Console.

Это второй по популярности компонент Symfony и самый популярный инструмент для разработки PHP CLI програм. К слову, Composer, Drush 9 и Drupal Console так же базируется на нем.

Console предоставляет множество полезных возможностей, среди которых:

  • объявление и обслуживание аргументов и опций;
  • управление выводом, в том числе форматами и цветами;
  • автоматическую генерацию справки.

Все эти, и некоторые другие, возможности используются в SMT версии 2.x, и вот что это дало, по сравнению с первой версией:

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

В отличии от версии 1.x, где я был волен выбирать варианты реализации по своему усмотрению, в Console повсеместно применяется ООП. Это, конечно, немного усложнило процесс для меня, пришлось разобраться с документацией и примерами реализации в других приложениях, но в итоге я остался очень доволен результатами, и еще раз хочу поблагодарить Ivan Ch за помощь и советы.

Синтаксис команд, формат конфигурационного файла и варианты использования полностью сохранились. Хотя Symfony/Console более строг к порядку аргументов, в этом отношении первая версия была более добра к пользователю.

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

Вместо итога

Если в работе вам часто приходится выполнять одни и те же рутинные операции, то разработка удобного инструмента для автоматизации их выполнения — это отличный способ на реальном примере погрузиться в разработку, изучить что-то новое и получить обратную связь от коллег по цеху. Именно этих принципов я придерживался при разработке своих программ, надеюсь они окажутся полезны и вам!

Источник

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