Настройка ssh windows server 2019

Обновлено: 05.07.2024

Начиная с Windows 10 1809 и Windows Server 2019 в операционной системе имеется встроенный SSH сервер, основанный на OpenSSH. В этой статье мы покажем, как установить и настроить OpenSSH сервер в Windows 10 и подключиться к нему удаленно по защищенному SSH протоколу (ну прям как в Linux 🙂 ).

Установка сервера OpenSSH в Windows

Рассмотрим, как установить компонент OpenSSH Server в Windows 10 1903 (Windows Server 2019 все выполняется аналогично).

Пакет OpenSSH (как и RSAT) уже включен в данные версии Windows в виде Feature on Demand (FoD).

При наличии прямого Интернет-подключения вы можете установить сервер OpenSSH с помощью PowerShell

Add-WindowsCapability -Online -Name OpenSSH.Server*

Или при помощи DISM:

dism /Online /Add-Capability /CapabilityName:OpenSSH.Server

В Windows 10 этот компонент также можно установить через панель Параметры (Приложения -> Управление дополнительными компонентами -> Добавить компонент). Найдите в списке Open SSH Server и нажмите кнопку Install).

Чтобы проверить, что OpenSSH сервер установлен, выполните: Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'

proverit-chto-ustanovlen-openssh-server-v-windows.jpg

Настройка SSH сервера в Windows

После уставной сервера OpenSSH в Windows вам нужно изменить тип запуска службы sshd на автоматический и запустить службу с помощью PowerShell:

Set-Service -Name sshd -StartupType 'Automatic'Start-Service sshd

start-service-sshd-zapustit-openssh.jpg

С помощью nestat убедитесь, что теперь в системе запущен SSH сервер и ждет подключений на 22 порту:

netstat -na| find ":22"

nestat-port-22-ssh-servera-windows.jpg

Проверьте, что включено правило брандмауэра (Windows Defender Firewall), разрешающее входящие подключения к Windows по порту TCP/22.

Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

pravilo-firewal-dlya-dostupa-k-windows-cherez-ssh.jpg

Если правило отключено (состоянии Enabled=False) или отсутствует, вы можете создать новое входящее правило командой New-NetFirewallRule:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

По умолчанию важным компоненты OpenSSH хранятся в следующих каталогах:

  • Исполняемые файлы OpenSSH Server: C:WindowsSystem32OpenSSH
  • Конфигурационный файл sshd_config (создается после первого запуска службы): C:ProgramDatassh
  • Журнал OpenSSH: C:windowssystem32OpenSSHlogssshd.log
  • Файл authorized_keys и ключи: %USERPROFILE%.ssh

При установке OpenSSH сервера в системе создается новый локальный пользователь sshd.

Sshd_config: Конфигурационный файл сервера OpenSSH

Вы можете изменить настройки сервере OpenSSH в конфигурационном файле %programdata%sshsshd_config.

Например, чтобы запретить SSH подключение для определенного доменного пользователя (и всех пользователей указанного домена), добавьте в конце файле директивы:

Чтобы разрешить подключение только для определенной доменной группы:

Либо можете разрешить доступ для локальной группы:

Можно запретить вход под учетными записями с правами администратора, в этом случае для выполнения привилегированных действий в SSH сессии нужно делать runas.

Следующие директивы разрешают SSH доступ по ключам (доступ к Windows через SSH по ключам рассмотрим подробно в следующей статье) и по паролю:

Вы можете изменить порт, на котором принимает подключения OpenSSH в конфигурационном файле sshd_config в директиве Port.

sshd-smena-porta-ssh-22.jpg

После любых изменений в конфигурационном файле sshd_config нужно перезапускать службы sshd:

Подключение к Windows 10 через SSH

Теперь вы можете попробовать подключиться к своей Windows 10 через SSH клиент (я использую putty, но можно пользоваться встроенным ssh клиентом Windows).

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

putty-sohranit-klyuch.jpg

Нажимаем Да, и в открывшееся окне авторизуемся под пользователем Windows.

ssh-sessiya-v-win-10-na-baze-openssh.jpg

При успешном подключении запускается командная оболочка cmd.exe со строкой-приглашением.

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

podklyuchenie-k-windows-10-cherez-ssh.jpg

Я предпочитаю работать в командной строке PowerShell. Чтобы запустить интерпретатор PowerShell, выполните:

powershell-exe-v-ssh-sessii-windows.jpg

Чтобы изменить Shell по умолчанию в OpenSSH с cmd.exe на PowerShell, внесите изменение в реестр такой командой:

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String –Force

openssh-izmenit-shell-po-umolchaniyu-na-powershel.jpg

Осталось перезапустить SSH подключение и убедиться, что при подключении используется командный интерпретатор PowerShell (об этом свидетельствует приглашение PS C:Usersadmin> ).

powershell-cli-v-windows-10-cherez-ssh.jpg

В SSH сессии запустилась консоль PowerShell, в которой работают привычные функции: авто дополнение, раскраска модулем PSReadLine, история команд и т.д. Если текущий пользователь входит в группу локальных администраторов, то все команды в его сессии выполняются с повышенными правами даже при включенном UAC.

wsi-imageoptim-0DJ3ik6kF6dGZ3lx0eD7-640x266.jpg

M icrosoft объявила о том, что в 2015 году к Windows будет подключен клиент OpenSSH. Они, наконец, сделали это, и внедрили клиент SSH в обновлении Windows 10 Fall Creators. Теперь Вы можете подключиться к серверу Secure Shell из Windows без установки PuTTY или любого другого стороннего программного обеспечения.

Это все еще бета-функция, поэтому Вам может быть лучше пользоваться PuTTY, пока она не станет стабильной. Согласно отслеживанию ошибок проекта на GitHub, интегрированный клиент SSH поддерживает только ключи ed25519.

Как установить клиент SSH для Windows 10

Клиент SSH входит в состав Windows 10, но это «дополнительная функция», которая по умолчанию не установлена. Чтобы установить его, откройте «Параметры» > «Приложения» и нажмите «Управление дополнительными компонентами» в разделе «Приложения и возможности».

wsi-imageoptim-qjZ9fsfOFlLN0sEwpOsZ.jpg

Нажмите «Добавить компонент» в верхней части списка установленных функций. Если у Вас уже установлен клиент SSH, он появится в списке.

wsi-imageoptim-qjZ9fsfOFlLN0sEwpOsZ.jpg

Прокрутите страницу вниз, нажмите кнопку «OpenSSH Client (Beta)» и нажмите «Установить».

Windows 10 также предлагает сервер OpenSSH, который Вы можете установить, если хотите запустить SSH-сервер на своем ПК. Вы должны установить это только в том случае, если Вы действительно хотите запустить сервер на своем ПК, а не просто подключиться к серверу, работающему в другой системе.

wsi-imageoptim-FRSrFy9ajtqfvoH6Ft41.jpg

Как использовать SSH-клиент в Windows 10

Теперь Вы можете использовать SSH-клиент, запустив команду ssh. Это работает либо в окне PowerShell, либо в окне командной строки, поэтому используйте то, что Вам нравится.

Чтобы запустить Windows PowerShell откройте поиск и введите «Windows PowerShell» и нажмите на результат поиска.

Чтобы просмотреть синтаксис команды ssh, просто запустите ее:

Как и в случае с другими клиентами SSH, Вам будет предложено принять ключ хоста при первом подключении. Затем Вы получите среду командной строки, которую Вы можете использовать для запуска команд в удаленной системе.

С добавлением клиента и сервера 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 МБ потребуется несколько минут.

1-24-300x199.jpg

Шаг 2 Установите сервер OpenSSH

Когда режим разработчика включен, мы готовы установить OpenSSH, и есть несколько способов сделать это, в зависимости от ваших предпочтений.

Мы рассмотрим такие как PowerShell, так и DISM.

Метод 1 Использование PowerShell

Весь процесс установки может быть выполнен в PowerShell, что более удобно, если вы устанавливаете OpenSSH на нескольких компьютерах.

Это можно было бы легко превратить в USB-Rubber Ducky-скрипт, чтобы сделать процесс настройки сервера SSH более быстрым.

Некоторые хакеры могут даже начать использовать это как способ создания SSH-бэкдора в системах Windows.

Сначала запустите PowerShell в качестве администратора, нажав Windows + X на клавиатуре и нажав «Windows PowerShell (Admin)». Затем убедитесь, что функции OpenSSH доступны для установки, выполнив следующую команду.

Оболочка должна вернуть «NotPresent», что означает, что сервер еще не загружен.

Как вы можете видеть, у меня установлен клиент OpenSSH, а сервер доступен для установки.

1-25-300x129.jpg

Предполагая, что OpenSSH доступен, вы можете установить сервер с помощью следующей команды.

Если он недоступен, убедитесь, что ваша система обновлена и включен режим разработчика, поскольку это две наиболее распространенные проблемы, которые могут вызвать это.

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

Когда процесс будет завершен, вы увидите что-то вроде экрана ниже.

2-5-300x106.jpg

Метод 2 Использование DISM

Если вы предпочитаете использовать командную строку поверх PowerShell, служба обслуживания изображений и управления развертыванием (DISM) — это инструмент командной строки, который мы также можем использовать для установки сервера OpenSSH.

Чтобы начать установку OpenSSH с помощью DISM, откройте командную строку в качестве администратора. Это можно сделать, выполнив поиск «CMD» в строке поиска в нижнем левом углу экрана. Щелкните правой кнопкой мыши «Командная строка» и выберите «Запуск от имени администратора».

Убедитесь, что функции OpenSSH доступны с помощью следующей команды.

3-3-300x101.jpg

Установите сервер с помощью этой команды:

4-1-300x139.jpg

Шаг 3 Создание ключей хоста

Теперь, когда у нас установлен сервер, нам нужно сгенерировать ключи хоста, чтобы сервер SSH смог аутентифицировать клиентов во время использования.

Для этого мы откроем PowerShell в качестве администратора, нажав Windows + X и нажав «Windows PowerShell (Admin)».

Запустите ssh-agent со следующей командой.

5-1-300x80.jpg

После запуска ssh-agent мы можем перейти в папку OpenSSH и начать генерировать ключ.

Используйте cd для изменения папок, как показано в первой команде ниже, а затем создайте ключ со второй

6-1-300x78.jpg

Теперь мы можем добавить ключ к нашему SSH-серверу со следующей командой.

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

Шаг 4 Установите модуль поддержки OpenSSH Utils

Теперь вы можете попытаться использовать SSH-сервер, но если вы это сделаете, вы столкнетесь со множеством ошибок.

Это связано с тем, что сервер все еще находится в стадии бета-тестирования и очень тонкий.

7-300x193.jpg

Чтобы решить эти проблемы, Microsoft создала вспомогательный модуль OpenSSHUtils, который соответствующим образом добавит ваши ключи хоста и установит права доступа к списку контроля доступа (ACL).

Чтобы установить OpenSSHUtils, мы выполним приведенную ниже команду.

Он также может попросить установить диспетчер пакетов NuGet.

Если у вас его еще нет, введите y для его установки.

Как только это будет сделано, мы готовы запустить вспомогательный модуль, который должен очистить те ошибки, которые мы видели ранее.

Для его установки выполните следующую команду.

Как вы можете видеть ниже, вы должны сказать «yes» несколько раз.

9-300x186.jpg

Шаг 5 Откройте порт в брандмауэре

Теперь все должно быть готово пойти на стороне сервера SSH.

Нам просто нужно открыть порт в брандмауэре, чтобы мы могли установить SSH-соединение с клиентом за пределами текущей системы Windows.

Ваши требования могут различаться в зависимости от вашей среды, но в целом для большинства пользователей Windows должно работать следующее правило брандмауэра.

В этой статье описывается настройка сервера OpenSSH (sshd) для ОС Windows.

Настройка стандартной оболочки OpenSSH для Windows

Стандартная оболочка командной строки предоставляет пользователю интерфейс, который он увидит при подключении к серверу по протоколу SSH. По умолчанию в среде Windows изначально используется командная оболочка Windows (cmd.exe). Кроме того, Windows включает PowerShell и Bash, и вы можете настроить в качестве оболочки по умолчанию для сервера любую из оболочек командной строки сторонних производителей, которые предоставляются для Windows.

Чтобы задать командную оболочку по умолчанию, для начала убедитесь, что папка установки OpenSSH находится в системном пути. В среде Windows по умолчанию она устанавливается в папку SystemDrive:WindowsDirectory\System32\openssh. Следующие команды позволяют узнать текущее значение пути (переменную среды path) и добавить к нему стандартную папку установки OpenSSH.

Командная оболочка Используемая команда
Команда путь
PowerShell $env:path

Настройка оболочки SSH по умолчанию выполняется в реестре Windows, где вам нужно добавить полный путь к исполняемому файлу оболочки в строковое значение DefaultShell в разделе Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH.

Например, следующая команда PowerShell устанавливает PowerShell.exe в качестве оболочки по умолчанию:

Конфигурация Windows в файле sshd_config

В среде Windows программа sshd по умолчанию считывает данные конфигурации из файла %programdata%\ssh\sshd_config, но вы можете указать другой файл конфигурации, запустив команду sshd.exe с параметром -f. Если указанный файл отсутствует, sshd создаст новый файл с конфигурацией по умолчанию при запуске службы.

Ниже перечислены элементы конфигурации специально для среды Windows, которые можно указать в sshd_config. Существуют и другие параметры конфигурации, которые здесь не перечислены, так как они подробно описаны в документации по OpenSSH для Win32 в Интернете.

AllowGroups, AllowUsers, DenyGroups, DenyUsers

Управление тем, какие пользователи и группы могут подключаться к серверу, осуществляется с помощью директив AllowGroups, AllowUsers, DenyGroups и DenyUsers. Директивы разрешения и запрета обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroups и наконец AllowGroups. Все имена учетных записей должны быть указаны в нижнем регистре. Дополнительные сведения о шаблонах с подстановочными знаками вы найдете в разделе PATTERNS непосредственно в файле ssh_config.

При настройке правил для пользователей и (или) групп в домене используйте следующий формат: user?domain* . Windows поддерживает несколько форматов для указания субъектов домена, но многие из них конфликтуют со стандартными шаблонами в Linux. По этой причине добавлен символ *, чтобы поддерживать полные доменные имена. Кроме того, этот подход использует "?" вместо "@", чтобы избежать конфликтов с форматом username@host.

Пользователи и группы, входящие в рабочие группы, а также подключенные к Интернету учетные записи всегда разрешаются в имена локальных учетных записей (без сегмента домена, примерно как стандартные имена в UNIX). Пользователи и группы домена строго разрешаются в формат NameSamCompatible, то есть "короткое_имя_домена\имя_пользователя". Все правила конфигурации для пользователей и групп должны соответствовать этому формату.

Примеры для пользователей и групп домена

Примеры для локальных пользователей и групп

AuthenticationMethods

Для OpenSSH в Windows поддерживаются только методы проверки подлинности "password" и "publickey".

AuthorizedKeysFile

По умолчанию используется значение .ssh/authorized_keys .ssh/authorized_keys2. Если путь не является абсолютным, он вычисляется относительно основного каталога пользователя (или пути к образу профиля). Например: c:\users\user. Обратите внимание, что если пользователь входит в группу администраторов, используется %programdata%/ssh/administrators_authorized_keys.

ChrootDirectory (добавлена поддержка в версии 7.7.0.0)

Эта директива поддерживается только для сеансов SFTP. Удаленный сеанс подключения к cmd.exe не учитывает ее. Чтобы настроить сервер chroot только для SFTP, укажите параметр ForceCommand со значением internal-sftp. Вы также можете настроить SCP с поддержкой chroot, реализовав пользовательскую оболочку, которая допускает только SCP и SFTP.

HostKey

По умолчанию используются значения %programdata%/ssh/ssh_host_ecdsa_key, %programdata%/ssh/ssh_host_ed25519_key, %programdata%/ssh/ssh_host_dsa_key и %programdata%/ssh/ssh_host_rsa_key. Если эти файлы отсутствуют, sshd автоматически создает их при запуске службы.

Сопоставление

Обратите внимание на правила шаблона в этом разделе. Имена пользователей и групп должны быть в нижнем регистре.

PermitRootLogin

Неприменимо в ОС Windows. Чтобы предотвратить вход администратора, примените для группы Administrators директиву DenyGroups.

SyslogFacility

Если вам требуется ведение журнала в файле, используйте LOCAL0. Журналы создаются в папке %programdata%\ssh\logs. Любое другое значение, включая используемое по умолчанию AUTH, направляет журналы в ETW. Дополнительные сведения см. в статье о возможностях по ведению журнала в Windows.

Не поддерживается

Следующие параметры конфигурации недоступны в версии OpenSSH, которая поставляется в составе Windows Server 2019 и Windows 10 версии 1809:

Прежде всего, вы можете спросить, зачем нам вообще нужен SSH-сервер на Windows-сервере? В среде Windows SSH может показаться не очень полезным. В конце концов, у нас есть RDP и PowerShell Remoting с WinRM, которые уже обеспечивают мощные возможности удаленного управления. Тем не менее, SSH в Windows определенно имеет свои преимущества. Среди них можно выделить такие вещи, как:

  • Простое подключение и управление Windows-серверами из Linux или MacOS с помощью встроенных инструментов.
  • Подключение из систем Windows к серверам Linux — это простое решение с интегрированным SSH-клиентом. Есть много администраторов Linux, которые должны управлять серверами на работе с помощью ОС Windows, и всегда должны устанавливать некоторые дополнительные инструменты, такие как PuTTY или WinSCP. Теперь они могут использовать знакомые команды SSH прямо из командной строки Windows.
  • Используются те же инструменты удаленного управления для серверов Linux и Windows (SSH, SCP, аутентификация с открытым ключом и т. д.).
  • Кроссплатформенный PowerShell Remoting. PowerShell Core использует SSH для включения удаленного сеанса PowerShell в Windows, MacOS и Linux. В отличие от WinRM PowerShell Remoting — Windows PowerShell работает только на Windows.
  • Вместе с подсистемой Windows для Linux вы можете получить Linux-подобные сеансы SSH с Bash и обычные инструменты Linux также на сервере Windows, который позволяет администраторам Linux использовать свои знания для управления системами Windows.
  • И наоборот: администраторы Windows могут использовать PowerShell для управления сервером Linux, если на нем будет присутствовать соответствующий shell от Microsoft.
  • Просто другой вариант для удаленного управления, который дает еще большую гибкость.

Установка OpenSSH в Windows Server 2019

Открываем Settings — Apps & features — Manage optional features:


Нажимаем Add a feature, ищем OpenSSH Server — Install:


На предыдущем экране дожидаемся окончания процесса инсталляции. OpenSSH сервер можем считать установленным.

Обращаем внимание, что установка этим методом автоматически создаст правило Windows Firewall, с названием «OpenSSH-Server-In-TCP», открывающее 22 порт для входящих подключений.

Проверим, присутствует ли на нашей системе встроенный OpenSSH:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

В ответ должны получить:

0.0.1.0
State : NotPresent

Устанавливаем клиент, если он не установлен:

Add-WindowsCapability -Online -Name OpenSSH.Client

Для установки сервера вводим:

Add-WindowsCapability -Online -Name OpenSSH.Server

В обоих случаях вывод должен быть следующим:

Path :
Online : True
RestartNeeded : False

Первичная конфигурация SSH-сервера

По умолчанию при подключении к OpenSSH-серверу используется командная строка Windows. Вы можете использовать практически любую оболочку на вашем компьютере с Windows через SSH-соединение. Даже возможно использовать Bash, когда подсистема Windows для Linux (WSL) также установлена на целевой машине. Также возможно изменение оболочки по умолчанию на SSH-сервере на нечто иное, чем командная оболочка. Для этого ключ реестра «DefaultShell» необходимо изменить.

Сделать это можно как через редактор реестра regedit.exe, открыв в нем следующий путь: HKEY_LOCAL_MACHINESOFTWAREOpenSSH и изменив в нем параметр DefaultShell, указав в нем полный путь до исполняемого файла необходимой командной строки, например:

Тоже самое можно сделать используя PowerShell:

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

Проверим настройки Windows Firewall, используя для этого PowerShell:

Get-NetFirewallRule -Name *ssh*

Введя данную команду мы получим параметры правила, разрешающего SSH-подключение к серверу. Если правила не оказалось, введем следующую команду, создав его:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Запуск службы OpenSSH

После установки функции SSH-сервера нам остается только его запустить:

Опционально можно установить для службы sshd автоматический запуск:

Set-Service -Name sshd -StartupType 'Automatic'

Подключение к серверу

Теперь мы готовы к работе и можем подключиться через установленное приложение к нашему хосту. Это можно осуществить либо с Windows 10, компьютера с Linux, с putty.exe на более старой машине с Windows, либо с Bash в настольной операционной системе от Microsoft. Все, что вам нужно, это найти какой-либо SSH-клиент, ввести в него имя пользователя, имя вашего сервера или IP-адрес и подключиться.

Для SSH-клиента в PowerShell синтаксис будет таким:

Ответив на него yes, хост подключения будет добавлен в список известных хостов сервера. После чего необходимо ввести пароль пользователя (по соображениям безопасности вводимые символы отображаться не будут). После успешного подключения отобразится интерфейс используемой командной строки:

Копирование файлов

Также, как с сервером OpenSSH в любой системе * nix, вы можете использовать SCP для копирования файлов на сервер или с сервера.
Например, администратор Linux может быстро получить файл журнала с сервера Windows с помощью той же команды, что и для сервера Linux.

scp username@servername:C:/inetpub/logs/LogFiles/W3SVC1/u_ex191017.log u_ex191017.log

Когда вы подключаетесь из Bash/*nix к машине с Windows, нужно помнить, что пути Windows также должны указываться с обычными косыми чертами Unix вместо обратных косых черт. Например, C:/Windows вместо C:Windows.

sshd_config

Аналогично операционным системам семейства Linux, OpenSSH Server в Windows имеет в своем составе особый файл, где хранятся все параметры для выполнения более подробных настроек. Например, для ограничения входа .

Кроме того, у Microsoft есть документация для специфичных настроек Windows.

В этой статье мы рассмотрим, как установить SSH сервер (OpenSSH) на Windows Server и использовать его для удаленного управления сервером с помощью PowerShell по протоколу SSH.

Установка пакета OpenSSH

Если Chocolatey еще не установлен, установить его можно следующими командами PowerShell:

Установка OpenSSH сервера после этого выполняется командой:

choco install openssh -params '"/SSHServerFeature /KeyBasedAuthenticationFeature"' –y

Данная команда выполнит установку как SSH сервера, так и клиента. Если нужно установить только клиент, нужно убрать аргумент param.

Сценарий установки автоматически создаст правило файервола, разрешающее подключение на 22 порт, и запустит службы sshd и ssh-agent.

Примечание. Если правило по каким-то причинам не создалось, вы можете создать его командой:

New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH

sshd

Для перезагрузки переменных окружения, выполните команду:

SSH авторизация в Windows по паролю

Для удаленного подключения к данному SSH серверу под локальным пользователем user1, воспользуйтесь такой командой:

После запуска команды, для авторизации нужно указать пароль пользователя user1. Если SSH-сервер включен в домен, можно авторизоваться и под пользователем Active Directory. Имя пользователя в этом случае указывается в формате domain\domain_user_name или domain_user_name@domain.

ssh –l domain_user_name@domain remotehost

SSH с аутентфикацией по ключу

Для беспарольного входа можно использовать авторизацию на сервере SSH по ключу. Сначала нужно сгенерировать ключ на клиенте (в процессе нужно указать ключевую фразу)

Ssh-keygen.exe

В результате в каталоге пользователя c:\users\username\.ssh появится два файла id_rsa и id_rsa.pub.

Теперь нужно запустить службу ssh-agent

И добавить в настройки агента путь к нашему закрытому ключу:

Затем нужно разрешить аутентфикацию по этому ключу на стороне сервера. Для этого, скопируйте файл открытого ключа(id_rsa.pub) на SSH сервер в файл C:\users\username\.ssh\authorized_keys. Либо, при наличии администартивного доступа сразу на обоих системах, скопировать файл можно так:

cat c:\users\username\.ssh\id_rsa.pub | Add-Content '\\192.168.1.100\c$\users\username\.ssh\authorized_keys'

Теперь службе сервера SSH нужно дать право на чтение данных их каталога.ssh.

icacls C:\users\username\.ssh /grant "NT Service\sshd:R" /T

Теперь можно подключится SSH-клиентом к серверу, указав параметр –i и путь к закрытому ключу:

Ssh

Ssh –I c:\users\username\.ssh\id_rsa –l user@domain 192.168.1.100

По умолчанию открывается командная строка cmd, но можно запустить и PowerShell:

Подключение с клиента через модуль Posh-SSH

Для удаленного подключения к SSH серверу, модуль Posh-SSH используется следующим образом:

Читайте также: