Заметки
вівторок, 5 липня 2016 р.
Как поднять людский SSH сервер на Windows. | SSH server on Windows using openSSH
И даже не спрашивайте зачем 🙂 Особенно когда есть PowerShell.
Я правда все равно расскажу 🙂
OpenSource — это жесть для извращенцев. Есть такая клевая программа R, есть ее улучшенная и переработанная версия (в которой о боги, добавлена многопоточность вычислений!) от майкрософта MRO, но и она благодаря убогости основной кодобазы недалеко ушла.
R используется для статистического анализа данных и для предсказаний будущего. Кто не знает — я тружусь в области аналитики (Digital Analytics). Кто сомневается зачем — мудрый человек недавно сказал: «аналитика это новый апп девелопмент».
Для анализа эффекта ТВ рекламы понадобилось предсказать количество открытых веб-сессий (и сессий на мобильных) в следующие минуты сразу же после показа телевизионной рекламы основываясь на прошлых значениях. Алилуя, — для этих целей здесь есть человек с соответствующим образованием и PhD. Похожую задачу решает Гугл и даже выдал страждующим готовый модуль для R CausalImpact. Может он написан так, может R в принципе не может работать быстрее, может действительно алгоритмы тяжелые, но один проход алгоритма (time series на пару сотен значений) занимает примерно минуты 3..4. Таких проходов для того чтобы набрать статистически весомые данные нужно примерно 10 тыс. Любители математики умеющие быстро делить на 60 уже оценили масштаб.
Есстетсвенно, что очень хочется распараллелить и тут уже я сгодился. Относительно несложно было найти MRO и подключить «многоядерные библиотеки» (еханы бабай 2016ый год же!). Стало легче. Но чтоб совсем уж исправить ситуацию — «а почему бы не подключить распределенные вычисления» подумал я.
Быстрый гугл показал, что возможно. Два дня потраченных нервов убедил в справедливости народной мудрости: «в теории между теорией и практикой разницы нет. Но на практике — она есть«.
К этому гребаному R невероятно мало документации и ее качество еще ниже, чем плинтус (уровень документации всяких тулзов на линуксы). Где-то в процессе, эксперементальным (!) путем удалось выяснить, что этот красава использует ssh для коннекта между сервером и клиентами. SSH удалось поставить и настроить, но без перекомпиляции R (чтобы исправить некоторые хардкоднутые значения командной строки) получить распределенные вычисления в вменяемое время не удалось. Сейчас проблему решаем дедовским методом: запуском нескольких копий R одновременно 🙂 Ну и учим сейчас Azure Machine Learning & Google Cloud.
А теперь собственно по теме!
Как поставить OpenSSH сервер на Windows
И не превратиться в нервного и дергающегося админа из серии: ничего не трогай ничего не меняй.
Установка OpenSSH Server в Windows
Если вам понадобился SFTP/SSH сервер на Windows Server 2012 R2, то вы попали по адресу. Установим, запустим, настроим и протестируем OpenSSH Server в Windows Server 2012 R2.
Установка OpenSSH в Windows Server 2012 R2
Скачиваем последнюю версию дистрибутива OpenSSH:
Сейчас доступна версия v8.0.0.0p1-Beta. Скачиваю OpenSSH-Win64.zip .
Создаю директорию C:\Program Files\OpenSSH , распаковываю в неё содержимое архива.
Запускаю powershell от имени администратора.
Выполняю скрипт установки:
Если произошла ошибка политики безопасности, то можно выполнить установку так:
powershell -ExecutionPolicy Bypass -File .\install-sshd.ps1
В результате вижу ошибку:
Исправляется легко, захожу в папку C:\ProgramData и создаю вручную директорию «ssh».
Снова пытаюсь сгенерировать ключи:
На этот раз процедура выполняется успешно.
Настраиваю владельца файлов и права доступа:
PowerShell -ExecutionPolicy Bypass -File .\FixHostFilePermissions.ps1
На каждый вопрос отвечаю «A».
Открыть 22 порт
OpenSSH работает по порту TCP 22. Открою доступ в Firewall:
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
То же самое можно сделать через GUI в оснастке Windows Firewall with Advanced Security .
Запуск службы OpenSSH
Открываю список служб:
Нахожу службу «OpenSSH SSH Server». В свойствах службы делаю автоматический запуск и запускаю её.
Проверим что 22 порт работает:
Проверка OpenSSH
Проверю с помощью WinSCP. Для доменного пользователя используется логин вида domain\username .
При первом входе появится окно:
Настройка доступа
Конфигурационный файл находится здесь: C:\ProgramData\ssh\sshd_config .
Собственно, OpenSSH конфигурируется здесь. Например, чтобы разрешить доступ по OpenSSH определённой группе пользователей, допишу в конец файла:
DenyUsers *
AllowGroups my_domain\my_group_for_ssh_access
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.
Information Security Squad
stay tune stay secure
Создайте собственный SSH-сервер в вашей системе Windows 10
С добавлением клиента и сервера OpenSSH в Windows 10 Fall Creators Update вам больше не придется полагаться на сторонние программы, чтобы открыть SSH-сервер и подключиться к машине Windows.
В то время как это все еще бета-функция, он представляет собой долгожданное обновление, выполняющее обещание, сделанное еще в 2015 году.
Клиент OpenSSH позволяет использовать SSH на удаленных серверах непосредственно из командной строки Windows.
Сервер позволяет удаленным клиентам подключаться к вашей системе Windows 10, где они смогут получить командную строку для вашей системы удаленно. Если вы знакомы с OpenSSH от Linux, то вы будете дома дома с версией Windows 10.
OpenSSH для Windows определенно находится в бета-форме и должен использоваться только в безопасной тестовой среде, такой как ваша домашняя сеть.
Это не должно использоваться в производстве или открываться в Интернете.
При этом, по прошествии времени, эта реализация OpenSSH должна стать более безопасной и полезной.
Чтобы следовать этому руководству, вам понадобится компьютер с Windows 10, который был полностью обновлен.
Перед началом работы убедитесь, что вы проверяете и устанавливаете любые обновления, которые могут быть у Windows или эти шаги могут не работать должным образом.
Чтобы проверить наличие обновлений, вы можете перейти к кнопке «Пуск», а затем перейти в «Настройки» -> «Обновление и безопасность» -> «Центр обновления Windows», затем нажмите «Проверить наличие обновлений».
Шаг 1 Включите режим разработчика
Для начала нам нужно убедиться, что система Windows установлена в «Режим разработчика», иначе загрузить эти бета-функции будет невозможно. П
ерейдите к строке поиска в нижней левой части экран
а. Найдите «настройки разработчиков» и он должен появиться в списке «Лучшее совпадение» в результатах.
Выберите его, чтобы открыть настройки.
Теперь вы должны увидеть меню «Использовать функции разработчика».
По умолчанию будет выбран параметр «Приложения Windows Store», поэтому нажмите «Режим разработчика», чтобы включить его.
Для установки файла размером 6 МБ потребуется несколько минут.
Шаг 2 Установите сервер OpenSSH
Когда режим разработчика включен, мы готовы установить OpenSSH, и есть несколько способов сделать это, в зависимости от ваших предпочтений.
Мы рассмотрим такие как PowerShell, так и DISM.
Метод 1 Использование PowerShell
Весь процесс установки может быть выполнен в PowerShell, что более удобно, если вы устанавливаете OpenSSH на нескольких компьютерах.
Это можно было бы легко превратить в USB-Rubber Ducky-скрипт, чтобы сделать процесс настройки сервера SSH более быстрым.
Некоторые хакеры могут даже начать использовать это как способ создания SSH-бэкдора в системах Windows.
Сначала запустите PowerShell в качестве администратора, нажав Windows + X на клавиатуре и нажав «Windows PowerShell (Admin)». Затем убедитесь, что функции OpenSSH доступны для установки, выполнив следующую команду.
Оболочка должна вернуть «NotPresent», что означает, что сервер еще не загружен.
Как вы можете видеть, у меня установлен клиент OpenSSH, а сервер доступен для установки.
Предполагая, что OpenSSH доступен, вы можете установить сервер с помощью следующей команды.
Если он недоступен, убедитесь, что ваша система обновлена и включен режим разработчика, поскольку это две наиболее распространенные проблемы, которые могут вызвать это.
Обратите внимание, что в приглашении может быть сказано, что перезагрузка не требуется, но мой опыт в том, что перезапуск действительно необходим.
Когда процесс будет завершен, вы увидите что-то вроде экрана ниже.
Метод 2 Использование DISM
Если вы предпочитаете использовать командную строку поверх PowerShell, служба обслуживания изображений и управления развертыванием (DISM) — это инструмент командной строки, который мы также можем использовать для установки сервера OpenSSH.
Чтобы начать установку OpenSSH с помощью DISM, откройте командную строку в качестве администратора. Это можно сделать, выполнив поиск «CMD» в строке поиска в нижнем левом углу экрана. Щелкните правой кнопкой мыши «Командная строка» и выберите «Запуск от имени администратора».
Убедитесь, что функции OpenSSH доступны с помощью следующей команды.
Если вы получаете следующее сообщение, то вы готовы установить сервер.
Установите сервер с помощью этой команды:
Шаг 3 Создание ключей хоста
Теперь, когда у нас установлен сервер, нам нужно сгенерировать ключи хоста, чтобы сервер SSH смог аутентифицировать клиентов во время использования.
Для этого мы откроем PowerShell в качестве администратора, нажав Windows + X и нажав «Windows PowerShell (Admin)».
Запустите ssh-agent со следующей командой.
После запуска ssh-agent мы можем перейти в папку OpenSSH и начать генерировать ключ.
Используйте cd для изменения папок, как показано в первой команде ниже, а затем создайте ключ со второй
Теперь мы можем добавить ключ к нашему SSH-серверу со следующей командой.
Это ключ, который будет использоваться с этого момента для наших SSH-соединений.
Шаг 4 Установите модуль поддержки OpenSSH Utils
Теперь вы можете попытаться использовать SSH-сервер, но если вы это сделаете, вы столкнетесь со множеством ошибок.
Это связано с тем, что сервер все еще находится в стадии бета-тестирования и очень тонкий.
Чтобы решить эти проблемы, Microsoft создала вспомогательный модуль OpenSSHUtils, который соответствующим образом добавит ваши ключи хоста и установит права доступа к списку контроля доступа (ACL).
Чтобы установить OpenSSHUtils, мы выполним приведенную ниже команду.
Он также может попросить установить диспетчер пакетов NuGet.
Если у вас его еще нет, введите y для его установки.
Как только это будет сделано, мы готовы запустить вспомогательный модуль, который должен очистить те ошибки, которые мы видели ранее.
Для его установки выполните следующую команду.
Как вы можете видеть ниже, вы должны сказать «yes» несколько раз.
Шаг 5 Откройте порт в брандмауэре
Теперь все должно быть готово пойти на стороне сервера SSH.
Нам просто нужно открыть порт в брандмауэре, чтобы мы могли установить SSH-соединение с клиентом за пределами текущей системы Windows.
Ваши требования могут различаться в зависимости от вашей среды, но в целом для большинства пользователей Windows должно работать следующее правило брандмауэра.
Введите следующую команду, чтобы открыть локальный порт 22 с именем SSH.