Ssh для windows server 2012

Установка и настройка SFTP сервера (SSH FTP) в Windows на базе OpenSSH

С помощью официального пакета OpenSSH для Windows вы можете с легкостью организовать безопасный обмен файлами между клиентом и серверов Windows по защищенному протоколу передачи файлов SFTP (Secure FTP). В этой статье мы покажем, как с помощью Win32-OpenSSH установить SFTP сервер на Windows 10 или Windows Server 2016/2012R2.

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

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

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

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

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

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

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

Установка Win32 OpenSSH в Windows 10 1803+/Windows Server 2019

В Windows 10, начиная с билда 1803, и в Windows Server 2019 пакет OpenSSH (как и RSAT) уже включен в операционную систему в виде Feature on Demand (FoD).

В Windows 10 и Windows Server 2019 вы можете установить сервер OpenSSH с помощью командлета PowerShell:

Add-WindowsCapability -Online -Name OpenSSH.Server*

Или с помощью DISM:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server

Или можно установить OpenSSH из графического интерфейса Windows 10 (Settings -> Apps -> Optional Features -> Add a feature -> Open SSH Server -> Install).

Исполняемые файлы OpenSSH находятся в каталоге:

Читайте также:  Режимы работы операционной системы microsoft windows

Конфигурационный файл sshd_config находится в каталоге C:\ProgramData\ssh (каталог создается после первого запуска службы).

Файл authorized_keys и ключи хранятся в каталоге %USERPROFILE%\.ssh\.

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

В предыдущих версиях Windows 10 и в Windows Server 2016/2012 R2 вы должны скачать и установить OpenSSH с GitHub (https://github.com/PowerShell/Win32-OpenSSH/releases). Нам нужна версия для 64 битной версии Windows: OpenSSH-Win64.zip (3,5 Мб).

  1. Распаковываем содержимое архива в целевой каталог, к примеру: C:\OpenSSH-Win
  2. Запускаем командную строку PowerShell с правами администратора и переходим в каталог OpenSSH: Cd C:\OpenSSH-Win
  3. Добавьте путь к каталогу OpenSSH в переменную окружения Path;
  4. Установите сервер OpenSSH: .\install-sshd.ps1 (должно появиться зеленое сообщение “sshd and ssh-agent services successfully installed”);
  5. Сгенерируйте SSH ключи для сервера (нужны для запуска службы sshd): ssh-keygen.exe –A

, убедитесь, что создан каталог %programdata%\ssh.

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

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

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

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

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

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

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

  1. Откроем консоль Powershell с правами администратора
  2. Остановим службу SSHD: Stop-Service sshd
  3. Удалим службу OpenSSD:Удалим ключи: .\uninstall-sshlsa.ps1

Установить OpenSSH на Server 2012 R2

Пролистывая задачи на фриланс биржах наткнулся на такой вопрос — просьба поставить на Windows Server 2012 R2 сервис для безопасного подключения через SSH, т. к. на другом конце — сотрудник имевший в свою очередь практическое знакомство только с Linux серверами и ему консоль ближе. Данная тема также интересна, помнится мне что ранее я уже разбирал как поставить возможность подключения к Windows 7 через ssh, сейчас же разберу и для текущей задачи.

Итак есть установленная система из оригинального образа Windows Server 2012 R2 (English), имеется одна учетная запись Administrator с паролем 712mbddr@, некоторые действия будут браться из ранее опубликованной.

На момент написания данной заметки версия Cygwin2.876, а версия пакета openssh: — 7.3p1-2

Далее запускаю терминал cygwin:

Win +X — Command Prompt (Admin) —

$ и мигает курсор ожидающий ввода команд

Генерируем ключи доступа (публичный и приватный):

$ ssh-host-config -y

*** Query: Please enter the password: 712mbddr@

*** Query: Reenter: 712mbddr@

Теперь переключаюсь через сочетание клавиш Alt + Tab во все еще открытое окно командной строки Windows и настраиваю правила для брандмауэра:

C:\Windows\system32>sc config sshd start= auto

C:\Windows\system32>net start sshd

C:\Windows\system32>netsh advfirewall firewall add rule name=»SSH Server» dir=in protocol=tcp localport=22 action=allow

C:\Windows\system32>netstat -an | findstr :22

TCP 0.0.0.0:22 0.0.0.0:0 LISTENING

TCP [::]:22 [::]:0 LISTENING

Если же нужно повесить сервис SSH на другой порт , то за редактирование следует обратиться к конфигурационному файлу который находится если через Alt +Tab переключиться в bash консоль или вызвать bat файл запускающий ее: C:\Cygwin\Cygwin.bat

( На заметку: работа с консольным редактором vi по аналогии, как и в Ubuntu)

$ vi /etc/sshd_config

После нажимаю: Esc → :wq!

На заметку: вообще это честно говоря пародия на bash консоль, т. к. не с первого раза отрабатывает переключение в режим редактирования, да и странным образом ведут себя другие команды. А потому советую перед боевым редактированием сперва сделать резервную копию редактируемого файла.

,либо же не переключаюсь в консоль Cygwin, вызвать текстовый редактор notepad и отредактировать конфиг:

C:\Windows\system32>notepad c:\Cygwin\etc\sshd_config

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

Все же лучше поставить простой редактор nano. Для этого запускаем скачанный файл: setup-x86_64.exe, далее все как обычно указываем сервер и пакет: nano

$ nano /etc/sshd_config

После: Ctrl + O, Ctrl + X и все, чем проще тем лучше.

Теперь нужно перезапустить сервис sshd для активации изменений:

(Остановить сервис sshd)

$ cygrunsrv.exe -E sshd

(Запустить сервис sshd)

$ cygrunsrv.exe -S sshd

или по старинке:

$ net stop sshd

The CYGWIN sshd service is stopping.

The CYGWIN sshd service was stopped successfully.

$ net start sshd

The CYGWIN sshd service is starting.

The CYGWIN sshd service was started successfully.

И если было настроено правило в брандмауэре на 22 порт, то видоизменяем правило:

$ netsh advfirewall firewall show rule name=all | findstr «SSH»

Rule Name: SSH Server

$ netsh advfirewall firewall set rule name=»SSH Server» new localport=22777

Updated 1 rule(s).

Проверяем, что можно с Ubuntu 12.04.5 Desktop amd64 системы подключиться к Windows Server 2012 R2 через ssh:

$ ssh -l Administrator 10.7.8.193 -p 22777

The authenticity of host ‘[10.7.8.193]:22777 ([10.7.8.193]:22777)’ can’t be established.

ECDSA key fingerprint is 42:4e:f6:93:5c:f4:39:bc:44:a7:68:e9:92:de:05:e7.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘[10.7.8.193]:22777’ (ECDSA) to the list of known hosts.

Administrator@10.7.8.193’s password: 712mbddr@

$ net stop Themes

The Themes service is stopping.

The Themes service was stopped successfully.

Итого подключение успешно прошло, а если нужно поставить какое либо ПО (пакет lynx) без необходимости запускать инсталлятор (GUI оболочку) то сделать это можно так:

$ cd c:/Users/Administrator/Downloads/

$ cygcheck.exe -p ‘lynx’ | grep lynx

Found 12 matches for lynx

lynx-debuginfo-2.8.7-2 — lynx-debuginfo: Debug info for lynx (installed binaries and support files)

lynx-2.8.7-2 — lynx: A text-based Web Browser (installed binaries and support files)

lynx-2.8.7-2-src — lynx: A text-based Web Browser (source code)

$ ./setup-x86_64.exe —root c:/Cygwin —no-desktop —no-shortcuts —no-startmenu —quiet-mode -q -P lynx

Starting cygwin install, version 2.876

User has backup/restore rights

Current Directory: c:/Cygwin

Could not open service McShield for query, start and stop. McAfee may not be installed, or we don’t have access.

root: c:\Cygwin system

Selected local directory: c:/Cygwin

Extracting from file://c:/Cygwin/http%3a%2f%2fcygwin.mirror.constant.com%2f/x86_64/release/lynx/lynx-2.8.7-2.tar.bz2

Changing gid back to original

running: c:\Cygwin\bin\dash.exe «/etc/postinstall/0p_000_autorebase.dash»

running: c:\Cygwin\bin\dash.exe «/etc/postinstall/0p_update-info-dir.dash»

running: c:\Cygwin\bin\bash.exe —norc —noprofile «/etc/postinstall/lynx.sh»

Changing gid to Administrators

Ending cygwin install

На заметку: также можно ставить несколько пакетов просто перечисляя их после ключа: -P tar,wget,lynx,unrar

Что еще, вроде как есть специальный пакет на подобии утилиты apt-get как в Ubuntu и с его помощью можно устанавливать пакеты привычным мне способом:

$ wget raw.github.com/transcode-open/apt-cyg/master/apt-cyg

$ chmod +x apt-cyg

$ mv apt-cyg c:/Cygwin/bin/

$ apt-cyg install curl

—2016-09-19 11:45:49— http://cygwin.mirror.constant.com//x86_64/release/curl/curl-7.50.3-1.tar.xz

Resolving cygwin.mirror.constant.com (cygwin.mirror.constant.com)… 108.61.5.83

Connecting to cygwin.mirror.constant.com (cygwin.mirror.constant.com)|108.61.5.83|:80… connected.

HTTP request sent, awaiting response… 200 OK

Length: 289508 (283K) [application/octet-stream]

Saving to: ‘curl-7.50.3-1.tar.xz’

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

Ладно что-то я отклонился от темы данной заметки, но все равно любой представленный материал у меня на блоге полезен. Так хоть и не совсем тривиальной был разбор как же все-таки установить openssh сервер на Windows Server 2012 R2 с упором на командную строку, с GUI же конечно же было бы проще, но нужно всегда заходить к решению проблемы с того, чего может не оказаться под рукой. А с помощью этой заметки я показал, как все же сделать. Итого, заметка функциональна и практична, на этом я прощаюсь, с уважением автор блога — ekzorchik.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще 🙂

Карта МКБ: 4432-7300-2472-8059
Yandex-деньги: 41001520055047

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Читайте также:  Gtx 460 поддерживает windows 10
Оцените статью