- Монтирование общих папок SSH / SFTP в Windows 7 [дубликат]
- Монтирование удалённых каталогов с помощью SFTP
- Монтирование удалённой папки
- Как примонтировать папку по sftp (sshfs)?
- autofs
- Крупнейшая в Европе школа английского языка
- Онлайн школа английского языка
- Школа английского языка по Skype
- Инструменты для монтирования файловой системы по SSH
- Немного теории об SSH, FTP и SFTP
- Клиентское ПО для работы с SFTP
- GUI для SSHFS
- Менеджер SSHFS соединений для CLI
- Обновление
- Вместо итога
Монтирование общих папок SSH / SFTP в Windows 7 [дубликат]
Я довольно незнаком с Windows, особенно с Windows 7, но использую ее для школьного проекта; по сути, у меня есть каталог, доступный через SSH, который я хотел бы смонтировать в Windows 7 так же, как вы делаете это через sshfs в Linux или OS X, но я не знаю ни одного порта FUSE для Windows 7. Кто-нибудь знает какие-либо простой способ сделать это в Windows 7?
(Работал бы только обычный SFTP-клиент, такой как FileZilla, но я бы предпочел не передавать файлы (и) вручную для компиляции каждый раз, когда я вносил изменения, поэтому предпочтительнее монтировать его как локальный том).
Взгляните на Dokan SSHFS для Windows. Dokan SSHFS — это программа, которая монтирует удаленные файловые системы с использованием SSH. Вам нужно будет установить распространяемый MSVC 2005 и библиотеку Dokan, доступную на странице загрузки SSHFS.
Другое решение заключается в использовании MindTerm вместе с NetDrive (обе имеют бесплатные домашние версии):
- Скачать и извлечь mindTerm
- Запустите mindterm.jar (дважды щелкните по нему, если можете, в противном случае в командной строке введите java -jar mindterm.jar)
- Введите хост, в который вы хотите войти, а затем имя пользователя и пароль.
- В меню выберите «Плагины»> «FTP на мост SFTP».
- Введите 127.0.0.1 для адреса прослушивания
- Введите 21 для порта прослушивания
- Выберите тип удаленной системы
- Нажмите Включить
- Нажмите Отклонить
- Далее мы хотим установить NetDrive
- После установки netdrive откройте его и нажмите «Новый сайт» внизу.
- Введите localhost (или как вы хотите это назвать) в качестве имени сайта
- Введите localhost для IP-адреса сайта
- Введите 21 для порта
- Выберите FTP для порта
- Выберите букву диска
- Установите флажок Подключиться как анонимный
- Нажмите Сохранить
- Нажмите Подключиться
- Нажмите X, чтобы закрыть окно (сворачивается в системный трей)
Вот оно! Соединение SSH / SFTP как диск в Windows. Я протестировал его в Windows Vista, однако в Windows XP он должен работать нормально.
Монтирование удалённых каталогов с помощью SFTP
Часто бывает нужен доступ к какой либо папке на сервере, и как по закону подлости на нём не оказывается хотя бы ftp сервера в виду того, что посчитали его ненужным во время настройки. Что ж. Можно потратить немного времени на его настройку, а можно сделать более лаконично, просто и безопасно монтируя удалённые каталоги с помощью sshfs. Тем более что от сервера требуется только наличие настроенного, и рабочего ssh сервера.
Для этого нам понадобится fuse, и собственно сам sshfs.
У меня Debian Sid, и пакеты называются именно так. В других дистрибутивах может не быть пакета fuse-utils, но будет fuse. Он и нужен. Пакет sshfs обычно одинаково назвывается во всех дистрибутивах.
Теперь загрузим модуль fuse:
Если у Вас к примеру archlinux, то не забудьте добавить модуль fuse в секцию MODULES в /etc/rc.conf чтобы он загрузился при следующем старте системы. Так же и в других дистрибутивах где пакетный менеджер не cделает это за Вас, следует добавить модуль в автозагрузку. Как это сделать зависит от конкретного дистрибутива.
Теперь необходимо добавить пользователя от котого планируется использование sshfs в группу fuse, и предоставить группе fuse соответствующие права:
Вместо $USERNAME следует подставить имя нужного пользователя.
Теперь для применения прав следует перезайти данным пользователем в систему, или «перелогиниться» в текущем терминале:
Всё готово. Для использования создадим папку в любом удобном месте и смонтируем туда. Я предпочитаю директорию /mnt/sftp .
Вместо следует поставить логин к ssh сервера, и вместо соответственно адрес.
Монтировать следует от обычного пользователя, и необходимо проверить, чтобы на директорию в которую монтируем, были соответствующие права.
Отмонтировать директорию следует с помощью команды fusermount:
Монтирование удалённой папки
Как примонтировать папку по sftp (sshfs)?
Рассмотрим вариант монтирование удаленной директории с использованием протокола SSH File Transfer Protocol (SFTP) настройка под хостинг Apache.
В ОС должна быть установлена поддержка FUSE: пакет sshfs — содержащий клиента файловой системы, основанный на протоколе передачи файлов Настройка и использование SSH.
Отмонтируется удаленный ресурс командой fusermount:
Автоподключение и перемонтирование удаленных папок. Для этого есть несколько вариантов:
Ключ -C (equivalent to ‘-o compression=yes’)включает сжатие (немного экономит трафик и ускоряет соединение)
autofs
Запустим демон afuse, кторый будет отслеживать все обращения к директории
После чего все обращения к файлам и папкам в папке
/sshfs/ будут вызывать монтирование соответствующей папки в
/sshfs/. После чего обращение пойдет дальше на удаленный хост. Самое главное для нас — все происходит абсолютно прозрачно при первом обращении к нужной папке из любой программы.
/sshfs/tmpvar@foobarhost.com вначале малость потормозит, потом покажет содержимое корневой папки / сервера foobarhost.com. Конечно, не всегда удобно писать полный адрес и параметры доступа к серверу tmpvar@foobarhost.com:22, поэтому мы их перенесем в настройки доступа ssh.
Теперь мы можем обращаться к нашему серверу по короткому имени fs как в ssh, так и в sshfs:
/sshfs/fs # смотрим корневую папку сервера.
Если вы монтите папку первый раз, то у вас появится окошко ввода пароля для доступа к указанному серверу. После того как соединение установлено, окно больше не будет вас докучать. Как вы уже поняли — можно легко сказать окну не вылезать — сделав авторизацию на сервер по ключу.
Крупнейшая в Европе школа английского языка
Промокоды, акции и подарки, чтобы Ваше обучение было не только интересным, но и выгодным. Закажите пробный урок уже сейчас!
Онлайн школа английского языка
Английский по скайпу от 680р за урок, без заучивания правил. Эффективно! Удобно! Выгодно! Начните обучение прямо сейчас.
Школа английского языка по Skype
Персональные занятия по разумным ценам. Бесплатные ресурсы для студентов: разговорные клубы, блог, вебинары, книги, тест на определение уровня английского. Пробный урок бесплатно!
Инструменты для монтирования файловой системы по 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». Кстати, поддерживаются и другие протоколы.
Строка подключения выглядит следующим образом:
Также в 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.
Разработка заняла порядка двух недель в относительно свободном режиме. При этом рабочий вариант был готов уже на второй день.
Приложение 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 Мб), и хоть на скорости работы это, на мой взгляд, не сказалось, первая версия может послужить более легковесной альтернативой.
Вместо итога
Если в работе вам часто приходится выполнять одни и те же рутинные операции, то разработка удобного инструмента для автоматизации их выполнения — это отличный способ на реальном примере погрузиться в разработку, изучить что-то новое и получить обратную связь от коллег по цеху. Именно этих принципов я придерживался при разработке своих программ, надеюсь они окажутся полезны и вам!