SFTP (SSH FTP) на Windows Server 2012 R2 | Windows для системных администраторов

SFTP (SSH FTP) на Windows Server 2012 R2

Продолжаем разговор о способах безопасной передачи файлов между клиентом и сервером на базе Windows Server 2012 R2. В прошлый раз мы рассмотрели применение протокола FTPS, как безопасного расширения протокола передачи файлов FTP. Сегодня мы остановимся на особенностях протокола передачи файлов SFTP (Secure FTP) и его применения в ОС семейства Windows Server.

Особенности протокола SFTP


Протокол SFTP (Secret File Transfer Protocol , Secure FTP или SSH FTP) является расширением протокола SSH, являющимся стандартом мира UNIX/Linux систем. Хотя с точки зрения пользователей он похож на FTP, но на самом деле это абсолютно другой протокол, не имеющий с FTP ничего общего. Данные между клиентом и сервером передаются по порту 22 через SSH туннель.

Основные преимущества протокола SFTP:

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

Реализация SFTP в системах Windows


Операционные системы Microsoft не предоставляют встроенных средств организации защищенного SFTP сервера. Для этих целей обычно использовались открытые или коммерческие решения, к примеру, Core FTP, FileZilla, CYGWIN, OpenSSH, FTP Shell, IPSwitch и пр.

Однако в октябре 2015 команда разработчиков Microsoft по направлению PowerShell анонсировала выход предварительной версии OpenSSH для Windows, являющейся портом OpenSSH для win32.

Примечание. На данный момент проект Win32-OpenSSH имеет предрелизный статус. По планам разработчиков в течении этого года проект будет выпущен финальный релиз.

Рассмотрим процесс настройки SFTP сервера на Windows Server 2012 R2 с помощью пакета Win32 OpenSSH.

Установка Win32 OpenSSH на Windows Server 2012 R2

Скачать скомпилированную версию пакета можно здесь: https://github.com/PowerShell/Win32-OpenSSH/releases. Нам нужна версия для 64 битной версии Wndows: OpenSSH-Win64.zip (4 Мб)

  1. Распаковываем содержимое архива в целевой каталог, к примеру: C:\OpenSSH-Win
  2. Запускаем командную строку PowerShell с правами администратора и переходим в каталог OpenSSH:

    Cd C:\OpenSSH-Win

  3. Сгенерируем SSH ключи сервера (нужны для запуска службы sshd):

    ssh-keygen.exe -AУстановка OpenSSH на Windows Server

    generating new host keys: RSA DSA ECDSA ED25519

  4. Разрешим в файерволе Windows входящий трафик на порт 22 (наш SSH сервер):

    New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSHПравило файервола для SSHD порт 22

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

    netsh advfirewall firewall add rule name='SSH Port' dir=in action=allow protocol=TCP localport=22

  5. Чтобы разрешить аутентификацию по ключам:

    powershell.exe .\install-sshlsa.ps1

  6. Перезагрузите сервер:

    Restart-Computer

  7. Откройте в любом текстовом редакторе конфигурационный файл C:\OpenSSH-Win\sshd_config, найдите и измените значение директивы Subsystem sftp на C:\OpenSSH-Win\sftp-server.exe Subsystem sftp
  8. Установим службу sshd

    .\sshd.exe install
    Установка службы sshd.exe

  9. Укажем, что она должна запускаться автоматически при старте системы и запустим ее:

    Set-Service sshd -StartupType Automatic

    Start-Service sshd

Примечание. В моем случае служба SSHD на Windows Server 2012 R2 отказалась запускаться с ошибкой:

net start sshd

The SSHD service is starting.
The SSHD service could not be started.
A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.

The SSHD service could not be started System error 1067 has occurred

При ручном запуске файла sshd.exe без параметров ошибка более информативная, но все равно не достаточная для решения проблемы.

.\sshd.exe

[Build Mar 19 2016 22:36:41]
key_load_private: insufficient buffer space
Could not load host key: ssh_host_rsa_key
key_load_private: insufficient buffer space
Could not load host key: ssh_host_dsa_key
key_load_private: insufficient buffer space
Could not load host key: ssh_host_ecdsa_key
key_load_private: insufficient buffer space
Could not load host key: ssh_host_ed25519_key
Disabling protocol version 2. Could not load host key

key_load_private: insufficient buffer space

Как оказалось, это известная бага релиза от 19.03.2016. Разработчики обещают исправить ее в следующих релизах. Пока рекомендуется использовать версию OpenSSH-Win64-1.1.

Тестируем SFTP подключение

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

В окне настройки подключения выберем протокол передачи файлов SFTP, укажем им сервера и авторизационные данные учетной записи Windows, под которой осуществляется подключение (возможно также настроить авторизацию по ключам).

winscp настройки sftp подключенияПри первом подключении появится окно с предупреждением о том, что ключ хоста отсутствует в локальном кеше.

key-warningЕсли все настроено правильно, клиент должен подключиться к SFTP серверу и отобразить список файлов в домашнем каталоге пользователя (по умолчанию каталог с профилем пользователя).

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

sftp подключение в winscp

Удаление службы Win32 OpenSSH

Чтобы корректно удалить службу Win32 OpenSSH из системы:

  1. Откроем консоль Powershell с правами администратора
  2. Остановим службу SSHD:

    Stop-Service sshd

  3. Удалим службу:

    .\sshd.exe uninstall

  4. Удалим ключи:

    powershell .\uninstall-sshlsa.ps1

Еще записи по теме: Windows Server 2012 R2
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 3

Оставить комментарий
  1. Macid | 04.04.2016

    аутентификацию по ключам дает ошибку:

    .\install-sshlsa.ps1 : File C:\OpenSSH-Win32\install-sshlsa.ps1 cannot be loaded. The file
    C:\OpenSSH-Win32\install-sshlsa.ps1 is not digitally signed. You cannot run this script on the current system. For
    more information about running scripts and setting execution policy, see about_Execution_Policies at
    http://go.microsoft.com/fwlink/?LinkID=135170.
    At line:1 char:1
    + .\install-sshlsa.ps1
    + ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

    Ответить
    • itpro | 07.04.2016

      В свойствах файла install-sshlsa.ps1 нажмите кнопку «Разблокировать» (аналогично статье _http://winitpro.ru/index.php/2015/03/06/otklyuchaem-preduprezhdenie-sistemy-bezopasnosti-v-windows-7/#h2_1)
      Если не поможет придется либо подписать скрипт, либо разрешить выполнение неподписанных PosH скриптов (только в рамках данной
      сессии)
      Set-ExecutionPolicy -Scope MachinePolicy -ExecutionPolicy Bypass
      Либо политикой:
      Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell. “Turn on Script Execution” : Allow all scripts

      Ответить
  2. Саша | 02.08.2016

    спасибо за статью. все поднялось, по 22 порту доступно, а есть ссылки на статьи, как добавить авторизацию по ldap или как прописать пользователей, где прописывать шары, на которые будет выкидывать после авторизации. видимо эта статья это часть настройки с 0?

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

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)



MAXCACHE: 0.25MB/0.00123 sec