Windows ssh монтирование папки

Монтирование общих папок 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 (обе имеют бесплатные домашние версии):

  1. Скачать и извлечь mindTerm
  2. Запустите mindterm.jar (дважды щелкните по нему, если можете, в противном случае в командной строке введите java -jar mindterm.jar)
  3. Введите хост, в который вы хотите войти, а затем имя пользователя и пароль.
  4. В меню выберите «Плагины»> «FTP на мост SFTP».
  5. Введите 127.0.0.1 для адреса прослушивания
  6. Введите 21 для порта прослушивания
  7. Выберите тип удаленной системы
  8. Нажмите Включить
  9. Нажмите Отклонить
  10. Далее мы хотим установить NetDrive
  11. После установки netdrive откройте его и нажмите «Новый сайт» внизу.
  12. Введите localhost (или как вы хотите это назвать) в качестве имени сайта
  13. Введите localhost для IP-адреса сайта
  14. Введите 21 для порта
  15. Выберите FTP для порта
  16. Выберите букву диска
  17. Установите флажок Подключиться как анонимный
  18. Нажмите Сохранить
  19. Нажмите Подключиться
  20. Нажмите X, чтобы закрыть окно (сворачивается в системный трей)

Вот оно! Соединение SSH / SFTP как диск в Windows. Я протестировал его в Windows Vista, однако в Windows XP он должен работать нормально.

Windows ssh монтирование папки

Я ищу решение, которое позволяет мне «монтировать» удаленный сервер по протоколам ssh или sftp.

  • Удаленный каталог должен отображаться как буква диска в Windows.
  • (необязательно) Возможно более одного одновременного подключения.
  • Бесплатные или платные решения являются приемлемыми.
  • Windows 7 является обязательным.

Вещи, которые я пробовал до сих пор:

  • sshfs — это в основном работает, но по какой-то причине, когда вы используете Notepad ++ для доступа к файлам через соединение sshfs, Notepad ++ не может правильно определить окончания строк. Также есть некоторые ошибки в пользовательском интерфейсе (вам нужно сохранить пароль, чтобы заставить его работать), и разработчик, похоже, отсутствует.
  • SFTP Net Drive — бесплатная версия работает, но я часто получаю 20-секундные паузы в открытых диалогах. Учитывая, что «сервер» — это виртуальная машина, работающая локально, это не проблема сети, и она не происходит с sshfs.
  • ExpanDrive — похоже, работает в моих начальных тестах. Нет странных лагов или плохого поведения. Я не возражаю против более тонкого решения (оно поддерживает N различных облачных провайдеров, а также SFTP), но оно работает.

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

Обновление: я добавил ответы ниже с теми, с которыми у меня действительно был некоторый успех.

Ответы

Из тех, что вы перечислили: я был бы осторожен с sshfs, так как базовый драйвер (Dokan) не обновлялся долгое время, и хотя он поддерживает Windows 7, у него были проблемы с Windows 8.x (и, вероятно, с Windows 10).

ExpanDrive работает как чудо , и я не вижу необходимости в «более тонком решении», вы можете просто не использовать протоколы, которые вам не нужны.

Я удивлен поведением, которое вы описываете в отношении SFTP Net Drive ; Я установил его в местах расположения многих клиентов, и это, вероятно, самое надежное программное обеспечение, которое я когда-либо пробовал (при правильной настройке). Лично из 100+ установок я никогда не видел описанного вами поведения.

Еще один отличный вариант, который вы можете рассмотреть, — это WebDrive . Как и ExpanDrive, он поддерживает множество протоколов, но не пугайтесь, он прост в использовании и довольно легкий.

Читайте также:  Драйвер сенсорного экрана windows 10 acer

Кроме того, вы можете проверить NetDrive ; очень похож на ExpanDrive и WebDrive, с широкой поддержкой многих бэкэндов и чистым и простым в использовании интерфейсом настройки.

Инструменты для монтирования файловой системы по 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. В некоторых случаях наблюдались и случаи порчи файлов, хотя, возможно, в актуальных версиях это уже могли исправить.

Читайте также:  Nginx windows or linux

На 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, программа для сортировки и конвертации музыкального архива, различного рода инструменты для пакетной обработки изображений для интернет-магазинов. Но эти программы не были рассчитаны на других пользователей, не было практически никакой обработки ошибок, различных вариантов передачи параметров или справки.

Читайте также:  Звук при старте windows

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

Вместо итога

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

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