Sftp подключить как диск windows 10
Однажды потребовалось мне организовать доступ к серверу по протоколу SMB и в поиске решения я наткнулся на следующую статью: Mounting your Nikhef home directory using SSH for Windows 8. Это было простое и удобное решение, которое использовало Putty. Чуть позже мне пришлось настраивать это решение на другом компьютере и я понял, что Putty тут лишний с тех пор как в Windows 10 появился встроенный ssh-клиент на основе OpenSSH.
Под катом — идентичная схема, только с использованием OpenSSH под Windows 10.
У меня схема организована следующим образом:
- На сервере запущена Samba, от имени пользователя www-data расшарена корневая папка с сайтами. Доступ к серверу только через ssh с авторизацией по ключу. Сервер за NATом, порт проброшен только для ssh.
- В процессе входа в аккаунт на домашней машине на Windows 10 через встроенный в систему OpenSSH устанавливается соединение с сервером с авторизацией по ключу.
- Туннелируется порт 445 удаленной машины на локальный порт 44445 сетевого loopback-адаптера доступного по адресу 10.255.255.1
- На loopback-адаптере 10.255.255.1 порт 44445 проксируется на локальный 445. Таким образом при подключении к \\10.255.255.1\ открывается удаленная шара с файлами (которая, при необходимости монтируется как сетевой диск).
Итак – сперва по шагам:
Подключите сетевой диск с помощью PowerShell
Чтобы сопоставить сетевые диски с помощью Powershell, вам необходимо выполнить следующую команду:
Новый-PSDrive -Name x -PSProvider FileSystem -Root \ server share -Persist
Вы можете узнать больше о Новый-PSDrive, который помогает создавать подключенные сетевые диски на MSDN.
Связанный: Как сопоставить WebDAV как сетевой диск.
- Как сопоставить OneDrive как сетевой диск
- Назначение OneDrive для бизнеса сетевого диска
- Доступ к FTP-серверу с помощью командной строки Windows
- Как получить доступ к FTP-серверу с помощью Notepad ++.
Если вы хотите, вы также можете загрузить и использовать один из этих бесплатных FTP-клиентов для своего ПК с Windows. Некоторых из вас также может заинтересовать установка и использование SIP-сервера в Windows.
.
Why should I map SFTP as a drive on Windows 10?
Mapping SFTP as a drive allows you to work with a remote file system as if it were a local disk drive, eliminating the nuisance of working with files stored on remote servers by enabling you to access them as if they were on your computer quickly and easily.
What is SFTP?
SFTP is a well known Secure File Transfer Protocol among IT folks and developers, used for integration and automation purposes. Part of its charm is that it enables remote access and file transfer within or between organizations, including the accessing, transferring and managing of files over a reliable data stream.
Unmapping SFTP on Windows
- Open your Windows Explorer.
- Right click your mapped drive and click disconnect .
And you're done! Fairly easy, right? Now go on and enjoy your easy access to files hosted on SFTP servers!
SFTP To Go offers managed SFTP/FTPS/S3 as a service - maximum reliability, security, availability, with 1 minute setup. Great for companies of any size, any scale.
Поэтому, случайно натолкнувшись на проект Win32-OpenSSH, я решил поделиться опытом настройки. Возможно кому-нибудь эта тулза сэкономить кучу нервов.
Отмечу, что данный проект пока что находится на стадии beta, поэтому его не рекомендуют использовать в production.
Итак, скачиваем последний релиз, на текущий момент это 7.9.0.0p1-beta. Есть версии как для 32 так и для 64 битных систем.
Распаковываем в C:\Program Files\OpenSSH
Обязательный момент для корректной работы: права на запись в этой директории должны быть только у SYSTEM и у админской группы.
Устанавливаем сервисы скриптом install-sshd.ps1 находящимся в этой директории
Разрешаем входящие подключения на 22 порт:
Уточнение: апплет New-NetFirewallRule используется на Windows Server 2012 и новее. В наиболее старых системах (либо десктопных) можно воспользоваться командой:
При запуске будут автоматически сгенерированы хост-ключи (если отсутствуют) в %programdata%\ssh
Автозапуск сервиса при запуске системы мы можем включить командой:
Так же, можно сменить командную оболочку по умолчанию (после установки, по умолчанию — cmd):
Уточнение: Необходимо указывать абсолютный путь.
А дальше настраиваем sshd_config, который расположем в C:\ProgramData\ssh. Например:
И создаем в пользовательской папке директорию .ssh, а в ней файл authorized_keys. Туда записываем публичные ключи.
Важное уточнение: права на запись в этот файл, должен иметь только пользователь, в чьей директории лежит файл.
Но если у вас проблемы с этим, всегда можно выключить проверку прав в конфиге:
К слову, в C:\Program Files\OpenSSH лежат 2 скрипта (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), которые должны но не обязаны фиксить права, в том числе и с authorized_keys, но почему-то не фиксят.
Не забывайте перезапускать сервис sshd после для применения изменений.
Если вы ищете способ добавить сетевое расположение или сопоставить FTP-диск и получить доступ к файлам и папкам на FTP-сервере изначально в Windows, то этот пост может вам помочь. Вы сможете одним щелчком мыши получить доступ к своим файлам в сетевых папках через проводник Windows.
How to map SFTP as a drive on Windows 10
Follow these 3 simple steps to access files on SFTP using Windows Explorer or any other application!
Как подключить FTP-диск
Вы можете создать или подключить диск прямо к вашему FTP-сайту из Windows. Для этого откройте Проводник> Компьютер (этот компьютер). Щелкните правой кнопкой мыши и выберите Подключить сетевой диск.
Вы также можете использовать Подключить сетевой диск кнопка:
Он предлагает варианты:
- Подключить сетевой диск
- Отключите сетевой диск.
Установите флажок «Повторно подключаться при входе», чтобы сделать сопоставление постоянным. Если вы планируете использовать учетные данные с сетевого компьютера для доступа к общей папке, установите флажок «Подключиться с использованием других учетных данных» и нажмите «ОК». Вам будет предложено ввести имя пользователя и пароль. Далее.
Теперь вам нужно будет ввести учетные данные для учетной записи пользователя, используя следующий формат в поле имени пользователя, чтобы ваша система знала, к какому сетевому компьютеру она будет подключаться: Компьютер Имя пользователя. Перейдите в свою сетевую папку для сопоставления и нажмите OK.
Как только вы это сделаете, вы сможете увидеть это в проводнике.
Чтобы сопоставить FTP-сайт, щелкните ссылку «Подключиться к веб-сайту, который можно использовать для хранения документов и изображений», чтобы открыть мастер добавления сетевого расположения.
Здесь вы должны выбрать настраиваемое сетевое расположение и указать расположение вашего веб-сайта, указать учетные данные, которые могут потребоваться, и назвать подключенный FTP-диск.
Прочтите: Как подключить диск с помощью настроек групповой политики.
Настройка Linux сервера
Предполагается, что ssh-сервер был предварительно настроен и включена авторизация по ключу.
Подключаемся по ssh из командной строки на windows-машине
В домашней папке пользователя, от имени которого мы будем авторизовываться при создании туннеля ищем файл ~/.ssh/authorized_keys (если файл отсутствует – создадим его).
Теперь необходимо в этот файл вставить содержимое нашего файла публичного ключа, созданного на нашей windows-машине (файл %APPDATA%\CIFSoverSSH\cifsoversshkey.pub). Откроем его в любом редакторе и вставим цепочку ключа с новой строки. Если есть другие ключи, просто вставим его с новой строки.
Устанавливаем Samba (на примере Debian)
Переименовываем старый файл настроек и создаем новый файл
Открываем пустой файл настроек и приводим его к следующему виду:
В последней секции мы настраиваем непосредственно шару. В названии секции указываем имя шары ShareName. Path = путь к файлам, которые мы хотим расшарить. В параметрах force user и force group указываем linux-пользователя, от имени которого будут сохраняться файлы при изменении и создании в шаре. Так как у меня там лежат файлы для веб-сервера – у меня пользователь www-data
Отключаемся и выходим в командную строку Windows
Всё готово. Теперь остается только запустить наш ярлык или выйти из профиля пользователя windows и снова войти (если вы создали задачу в планировщике).
После этого ваша удаленная шара будет доступна по адресу \\10.255.255.1\ShareName — Можно даже монтировать её как сетевой диск.
Сегодня расскажу как смонтировать папку (например, с сайтами) из Debian в Windows 10 по SSH (SFTP) с удобным включением/выключением. Под нужным пользователем (www-data) с нужными правами.
Ниже длинное вступление о том как и зачем мне это нужно . Его можно промотать.
Те кто читал мои посты в блоге и видел видосики на канале знают что в основном я занимаюсь разработкой своих сайтов на WordPress, Yii, Laravel. Основной инструмент — PhpStorm. Боевые проекты хостятся на разных вдсках в основном это FastVPS и RuWEB. Везде Debian + Nginx и везде более менее стандартный конфиг (с поправкой на версии и нагрузку кажого из проектов). Всего порядка десяка вдсок.
Разработка и бэкапы на локальной машине под Windows 10 , где крутится усредненный аналог боевой конфиги в VirtualBox . Т.е. дев сервер сейчас это Debian 10 + Nginx 1.15.
Разработка и деплой на rsync
Я знаю про Docker :)
Эта схема не тренд, а мой личный велосипед. Логичнее было все это хозяйство контейнезировать и деплоить через гит. Однако некоторые проекты контейнезировать без потерь крайне сложно, а городить разные инфраструктуры при работе в одни руки не эффективно. Мой велосипед вполне успешно работает уже много лет, но есть одна проблема, над которой я бьюсь столько же лет сколько велосипед существует.
Проблема на самом деле в PhpStorm
В PhpStorm когда вы создаете проект из ранее созданных файлов ( Create New Project from Existing Files ) у вас есть по сути два выбора — файлы проекта расположены локально или удаленно. Если создать проект из удаленных файлов, то PhpStorm будет скачивать их все на локальный диск для индексации. А при изменении закачивать их обратно на удаленный сервер (например по SFTP). Это не проблема, когда разработка идет на одном компьютере.
Разработка на разных компах, в разных сетях
Однако я работаю сразу на 3х — стационарный десктоп под Windows 10, два ноутбука. Один ноут используется дома (нравится мне менять места и позы во время работы), второй используется реже — вне дома. И в этом случае возникает сложность синхронизации локальных проектов одного и того же удаленного проекта. Особенно если это проекты с множеством мелких файлов. Например Laravel c Laravel Mix. Короче жуткая головная боль.
На стороне WINDOWS
Должен быть установлены OpenSSH. В Windows 10 и Windows Server 2019 появился встроенный SSH клиент на основе OpenSSH. Им мы и воспользуемся. Сначала убедимся что он установлен – наберем в командной строке
Если видим исполнение команды — все "Ок", клиент присутствует в системе.
Шаг 1. Настройка сетевого адаптера
Устанавливаем loopback-адаптер в системе. Мы будем обращаться по адресу к локальному адаптеру.
Запустится «Мастер установки оборудования» (Здесь я пользуюсь русской Windows 10 Pro).
«Далее» -> «Установка оборудования, выбранного из списка вручную» -> «Сетевые адаптеры» -> «Microsoft –> Адаптер замыкания на себя Microsoft KM-Test» -> «Далее»
Уверен, что эти шаги можно сделать из командной строки, но не нашел способ установки драйвера без devcon.exe, потому и не стал заморачиваться с автоматизацией этого шага.
Далее уже в CMD (от имени Администратора).
Видим появился второй адаптер. У меня он называется Ethernet 2.
Теперь настроим адрес для этого адаптера
Или из командной строки:
В результате у нас появился адаптер локально доступный по адресу 10.255.255.1
Теперь проблема в том, что нам необходимо получить доступ к общей папке через TCP-порт 445, но при загрузке Windows этот порт захватывается системным драйвером lanmanserver для всех интерфейсов. Отложив запуск драйвера lanmanserver и установив правило portproxy, мы можем обойти это.
Далее в командной строке от имени администратора меняем режим запуска сетевых служб (пробел после «start=» обязателен. ):
и настраиваем для адаптера с адресом 10.255.255.1 проксирование порта 44445 на локальный порт 445
Теперь необходимо перезагрузиться, чтобы схема перехвата порта у службы lanmanserver сработала.
Проверяем что прослушивание порта осуществляется нашим loopback-адаптером, просмотрев открытые в системе порты
значит все в порядке и порт прослушивается на нужном адресе. Если же мы видим "0.0.0.0:445" — значит в нашей схеме что-то не сработало правильно. Проверить правила переадресации портов можно командой
Шаг 2. Ключ и рабочий скрипт
Создаем папку для вспомогательных файлов. Встроим, так сказать в систему наш способ.
Генерируем ключ для ssh-авторизации (назовем его, например: cifsoversshkey)
В результате текущий пользователь будет назначен владельцем, отключено наследование и удалены унаследованные права. Проверить мы это сможем командой
Должны быть права только для текущего пользователя, иначе файл ключа не будет принят программой OpenSSH и соединение не будет подниматься!
Создадим в текущей папке пакетный файл cifsoverssh.cmd следующего содержания:
Где:
user@111.111.111.111 – пользователь на стороне linux сервера @ адрес удаленного сервера
Шаг 3. Ярлык или задача в планировщике
Создаем ярлык для следующей команды: powershell -nologo -noninteractive -windowStyle hidden -command "%APPDATA%\CIFSoverSSH\cifsoversshkey.cmd"
Это позволит запускать наш пакетный файл через powershell без открытия окна. Если запускать его через CMD будет открываться черное окно терминала и будет висеть все время, пока соединение будет установлено, а это неудобно и некрасиво.
Для автоматизации запуска при входе в систему можно создать задачу в планировщике:
На стороне клиентского компьютера Windows все приготовления были закончены.
Монтирование папки из Linux (Debian) в Windows по SFTP
Итак ставим сначала WinFSP, затем SSHFS-Win. Сразу после перезагрузки диски папки можно будет легко монтировать прямо из проводника Windows 10. См. картинку.
Монтирование папки через проводник в SSHFS-Win
Однако в моем случае это не решило проблему.
На стороне WINDOWS
Должен быть установлены OpenSSH. В Windows 10 и Windows Server 2019 появился встроенный SSH клиент на основе OpenSSH. Им мы и воспользуемся. Сначала убедимся что он установлен – наберем в командной строке
Если видим исполнение команды — все "Ок", клиент присутствует в системе.
Шаг 1. Настройка сетевого адаптера
Устанавливаем loopback-адаптер в системе. Мы будем обращаться по адресу к локальному адаптеру.
Запустится «Мастер установки оборудования» (Здесь я пользуюсь русской Windows 10 Pro).
«Далее» -> «Установка оборудования, выбранного из списка вручную» -> «Сетевые адаптеры» -> «Microsoft –> Адаптер замыкания на себя Microsoft KM-Test» -> «Далее»
Уверен, что эти шаги можно сделать из командной строки, но не нашел способ установки драйвера без devcon.exe, потому и не стал заморачиваться с автоматизацией этого шага.
Далее уже в CMD (от имени Администратора).
Видим появился второй адаптер. У меня он называется Ethernet 2.
Теперь настроим адрес для этого адаптера
Или из командной строки:
В результате у нас появился адаптер локально доступный по адресу 10.255.255.1
Теперь проблема в том, что нам необходимо получить доступ к общей папке через TCP-порт 445, но при загрузке Windows этот порт захватывается системным драйвером lanmanserver для всех интерфейсов. Отложив запуск драйвера lanmanserver и установив правило portproxy, мы можем обойти это.
Далее в командной строке от имени администратора меняем режим запуска сетевых служб (пробел после «start=» обязателен. ):
и настраиваем для адаптера с адресом 10.255.255.1 проксирование порта 44445 на локальный порт 445
Теперь необходимо перезагрузиться, чтобы схема перехвата порта у службы lanmanserver сработала.
Проверяем что прослушивание порта осуществляется нашим loopback-адаптером, просмотрев открытые в системе порты
значит все в порядке и порт прослушивается на нужном адресе. Если же мы видим "0.0.0.0:445" — значит в нашей схеме что-то не сработало правильно. Проверить правила переадресации портов можно командой
Шаг 2. Ключ и рабочий скрипт
Создаем папку для вспомогательных файлов. Встроим, так сказать в систему наш способ.
Генерируем ключ для ssh-авторизации (назовем его, например: cifsoversshkey)
В результате текущий пользователь будет назначен владельцем, отключено наследование и удалены унаследованные права. Проверить мы это сможем командой
Должны быть права только для текущего пользователя, иначе файл ключа не будет принят программой OpenSSH и соединение не будет подниматься!
Создадим в текущей папке пакетный файл cifsoverssh.cmd следующего содержания:
Где:
user@111.111.111.111 – пользователь на стороне linux сервера @ адрес удаленного сервера
Шаг 3. Ярлык или задача в планировщике
Создаем ярлык для следующей команды: powershell -nologo -noninteractive -windowStyle hidden -command "%APPDATA%\CIFSoverSSH\cifsoversshkey.cmd"
Это позволит запускать наш пакетный файл через powershell без открытия окна. Если запускать его через CMD будет открываться черное окно терминала и будет висеть все время, пока соединение будет установлено, а это неудобно и некрасиво.
Для автоматизации запуска при входе в систему можно создать задачу в планировщике:
На стороне клиентского компьютера Windows все приготовления были закончены.
Монтирование папки из Debian все бы решило
Куда проще если бы можно было подмонтировать удаленную папку сайта и создавать проект в PhpStorm как с локальными файлами. В Ubuntu это делается элементарно, а вот под виндой все на порядок сложнее.
Вариант с Samba
В принципе дома у меня работала схема с Samba сервером на дев виртуалке под юзером www-data. Но если работать с дев сервером с улицы (через проброс портов через роутер) и если домашний ip динамический, то возникает несколько сложностей — нужно каждый раз менять ip, пробрасывать порт в роутере ещё и на самбу (лишняя уязвимость), перемонтировать диски. Короче хотелось так чтобы как в Ubuntu. И выход нашелся.
Подключите сетевой диск с помощью командной строки
Чтобы сопоставить сетевые диски с помощью командной строки, в командной строке с повышенными привилегиями необходимо выполнить следующую команду:
чистое использование x: \ server share / persistent: да
Здесь Икс буква диска, а / постоянный: да параметр делает его постоянным.
Вы можете узнать больше о Чистое использование команда, которая позволяет подключать компьютер к общему ресурсу на Технет.
Прочтите: Как очистить кэш подключенного сетевого диска.
Mapping 101
Don't have an SFTP server? Set one up quickly with SFTP To Go.
SFTP To Go offers managed SFTP/FTPS/S3 as a service - maximum reliability, security, availability, with 1 minute setup. Great for companies of any size, any scale.
- Install the latest version of WinFsp. Download the .msi file from here and then open it to install.
- Install the latest version of SSHFS-Win. Download the .msi file that is compatible with your Windows installation (32 or 64 bit) and then open it to install.
- We also recommend installing SSHFS-Win manager. It lets you easily manage one or more connections as well as create a connection using private/public key authentication. Download and run the .exe file from here to install.
Now that you’ve got all of the required foundations laid out, you can start mapping your SFTP servers as Windows drives.
If you haven’t installed SSHFS-Win Manager, follow these steps to map your SFTP server using user/password authentication:
- Open your Windows Explorer and right click This PC .
Click Map network drive. and in the dialog that opens, choose your drive letter.
If you’d like to use private/public key authentication, we recommend following these steps with SSHFS-Win Manager:
- Open SSHFS-Win manager and add a new connection by clicking Add Connection , entering all of the required connection details. Then, click Save .
- Click the connection to start it.
- If the connection doesn’t start and there are no error messages, click Settings and ensure that the path to SSHFS Binary is set correctly. Continue to try starting the connection again.
Добавить сетевое расположение
Снимите отметку Войти анонимно и укажите имя пользователя и пароль. Щелкните Далее. При запросе дайте имя сетевому расположению. Еще раз нажмите Далее. Теперь выберите Откройте это сетевое расположение, когда я нажму «Готово».
Вам будет предложено ввести свои учетные данные, и как только вы это сделаете, вы будете подключены к вашему сетевому диску, FTP-диску или вашему веб-сайту.
Это очень полезно, если вам нужно соединить ваши компьютеры вместе для обмена файлами, хранения файлов в Интернете или запуска веб-сайта.
СОВЕТ: См. Этот пост, если вам не удается подключить сетевой диск.
What does "mapping a drive" mean?
Drive mapping provides a shortcut to access a network resource, through the assignment of a drive letter to a remote share. The resource is stored on a different device, while behaving as any other local hard drive file. To access it, you can simply select a local drive from Windows Explorer and the resource will appear in My Computer and Windows Explorer.
Нестандартные порты SSH при монтировании
При монтировании папки через проводник вы можете указать путь до папки на сервере, но не можете указать порт SSH, если ssh висит не на 22. Это можно сделать в командной строке
Читайте также: