Start ssh server windows

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

Содержание:

  • Установка сервера OpenSSH в Windows
  • Настройка SSH сервера в Windows
  • Sshd_config: Конфигурационный файл сервера OpenSSH
  • Подключение по SSH к Windows компьютеру
  • Логи SSH подключений в Windows

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

Пакет OpenSSH Server включен в современные версии Windows 10 (начиная с 1803), Windows 11 и Windows Server 2022/2019 в виде Feature on Demand (FoD). Для установки сервера OpenSSH достаточно выполнить PowerShell команду:

Get-WindowsCapability -Online | Where-Object Name -like ‘OpenSSH.Server*’ | Add-WindowsCapability –Online

Или при помощи команды DISM:

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

Если ваш компьютер подключен к интернету, пакет OpenSSH.Server будет скачан и установлен в Windows.

Также вы можете установить сервер OpenSSH в Windows через современную панель Параметры (Settings -> Apps and features -> Optional features -> Add a feature, Приложения -> Управление дополнительными компонентами -> Добавить компонент. Найдите в списке OpenSSH Server и нажмите кнопку Install).

Установка openssh сервера из панели параметры windows 10

На изолированных от интернета компьютерах вы можете установить компонент с ISO образа Features On Demand (доступен в личном кабинете на сайте Microsoft: MSDN или my.visualstudio.com). Скачайте диск, извлеките его содержимое в папку c:\FOD (достаточно распаковать извлечь файл
OpenSSH-Server-Package~31bf3856ad364e35~amd64~~.cab
), выполните установку из локального репозитория:

Add-WindowsCapability -Name OpenSSH.Server~~~~0.0.1.0 -Online -Source c:\FOD

Также доступен MSI установщик OpenSSH для Windows в официальном репозитории Microsoft на GitHub (https://github.com/PowerShell/Win32-OpenSSH/releases/). Например, для Windows 10 x64 нужно скачать и установить пакет OpenSSH-Win64-v8.9.1.0.msi. Следующая PowerShell команда скачает MSI файл и установит клиент и сервер OpenSSH:

Invoke-WebRequest https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.9.1.0p1-Beta/OpenSSH-Win64-v8.9.1.0.msi -OutFile $HOME\Downloads\OpenSSH-Win64-v8.9.1.0.msi -UseBasicParsing

msiexec /i c:\users\root\downloads\OpenSSH-Win64-v8.9.1.0.msi

установочный msi файл openssh server для windows

Также вы можете вручную установить OpenSSH сервер в предыдущих версиях Windows (Windows 8.1, Windows Server 2016/2012R2). Пример установки Win32-OpenSSH есть в статье “Настройка SFTP сервера (SSH FTP) в Windows”.

Чтобы проверить, что OpenSSH сервер установлен, выполните:

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

State : Installed

проверить что установлен OpenSSH сервер в windows 10

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

После установки сервера OpenSSH в Windows добавляются две службы:

  • ssh-agent (OpenSSH Authentication Agent) – можно использовать для управления закрытыми ключами если вы настроили SSH аутентификацию по ключам;
  • sshd (OpenSSH SSH Server) – собственно сам SSH сервер.

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

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

Start-Service sshd - запустить openssh

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

netstat -na| find ":22"

nestat - порт 22 ssh сервера windows

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

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

Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

правило firewall для доступа к windows через ssh

Если правило отключено (состоянии 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:\Windows\System32\OpenSSH\
    (sshd.exe, ssh.exe, ssh-keygen.exe, sftp.exe и т.д.)
  • Конфигурационный файл sshd_config (создается после первого запуска службы):
    C:\ProgramData\ssh
  • Файлы authorized_keys и ssh ключи можно хранить в профиле пользователей:
    %USERPROFILE%\.ssh\

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

Настройки сервере OpenSSH хранятся в конфигурационном файле %programdata%\ssh\sshd_config. Это обычный текстовый файл с набором директив. Для редактирования можно использовать любой текстовый редактор (я предпочитаю notepad++). Можно открыть с помощью обычного блокнота:

start-process notepad C:\Programdata\ssh\sshd_config

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

DenyUsers winitpro\[email protected]
DenyUsers corp\*

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

AllowGroups winitpro\sshadmins

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

AllowGroups sshadmins

По умолчанию могут к openssh могут подключаться все пользователи Windows. Директивы обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroups,AllowGroups.

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

DenyGroups Administrators

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

PubkeyAuthentication yes
PasswordAuthentication yes

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

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

restart-service sshd

Подключение по SSH к Windows компьютеру

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

Вы можете использовать встроенный SSH клиентом Windows для подключения к удаленному хосту. Для этого нужно в командной строке выполнить команду:

ssh [email protected]

В этом примере
alexbel
– имя пользователя на удаленном Windows компьютере, и 192.168.31.102 – IP адрес или DNS имя компьютера.

Обратите внимание что можно использовать следующие форматы имен пользователей Windows при подключении через SSH:

  • alex@server1
    – локальный пользователь Windows
  • [email protected]@server1
    –пользователь Active Directory (в виде UPN) или аккаунт Microsoft/ Azure(Microsoft 365)
  • winitpro\alex@server1
    – NetBIOS формат имени

В домене Active Directory можно использовать Kerberos аутентификацию в SSH. Для этого в sshd_config нужно включить параметр:

GSSAPIAuthentication yes

После этого можно прозрачно подключать к SSH сервер с Windows компьютера в домене из сессии доменного подключается. В этом случае пароль пользователя не указывается и выполняется SSO аутентификация через Kerberos:

ssh -K server1

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

putty сохранить ключ

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

ssh сессия в win 10 на базе openssh

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

admin@win10tst C:\Users\admin>

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

подключение к windows 10 через ssh

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

powershell.exe

powershell.exe в ssh сессии windows

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

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String –Force

openssh - изменить shell по умолчанию на powershell

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

powershell cli в windows 10 через ssh

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

Логи SSH подключений в Windows

В Windows логи подключений к SSH серверу по-умолчанию пишутся не в текстовые файлы, а в отдельный журнал событий через Event Tracing for Windows (ETW). Откройте консоль Event Viewer (
eventvwr.msc
>) и перейдите в раздел Application and services logs -> OpenSSH -> Operational.

При успешном подключении с помощью к SSH серверу с помощью пароля в журнале появится событие:

EventID: 4
sshd: Accepted password for root from 192.168.31.53 port 65479 ssh2

события подключения к openssh сервер windows в event viewer

Если была выполнена аутентификация с помощью SSH ключа, событие будет выглядеть так:

sshd: Accepted publickey for locadm from 192.168.31.53 port 55772 ssh2: ED25519 SHA256:FEHDEC/J72Fb2zC2oJNb45678967kghH43h3bBl31ldPs

Если вы хотите, чтобы логи писались в локальный текстовый файл, нужно в файле sshd_config включить параметры:

SyslogFacility LOCAL0
LogLevel INFO

Перезапустите службу sshd и провеьте, что теперь логи SSH сервера пишутся в файл C:\ProgramData\ssh\logs\sshd.log

текстовый sshd.log в windows

Все способы:

  • Способ 1: Перерегистрация в «PowerShell»
  • Способ 2: Установка вручную
  • Способ 3: Копирование с другого компьютера
  • Способ 4: Обновление Windows
  • Вопросы и ответы: 0

Способ 1: Перерегистрация в «PowerShell»

Деинсталлированные средствами консоли универсальные приложения Windows 10, как правило, не удаляются полностью. Их исполняемые и ключевые конфигурационные файлы остаются на месте, благодаря чему программы можно восстанавливать путем их повторной регистрации в системе. В той же мере это касается Магазина Windows.

  1. Запустите от имени администратора консоль «PowerShell» из контекстного меню кнопки «Пуск» или другим известным способом.
  2. Как восстановить Магазин Windows 10 после удаления-1

  3. Убедитесь, что файлы Магазина имеются на диске, для чего выполните команду Get-ChildItem 'C:\Program Files\WindowsApps'|where-object {$_.Name -like "*WindowsStore*"}.
  4. Как восстановить Магазин Windows 10 после удаления-2

  5. Выполните команду регистрации приложения Get-AppXPackage *WindowsStore* -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}.
  6. Как восстановить Магазин Windows 10 после удаления-3

Процедура регистрации и развертывания приложения в системе обычно занимает не более минуты. Если при выполнении команды будет выдана ошибка доступа, получите права на каталог C:\Program Files\WindowsApps.Для ознакомления с разными методами получения прав доступа на каталоги Windows перейдите по ссылке ниже.

Подробнее: Как получить полные права на папку в Windows 10

Если с правами доступа все в порядке, но при выполнении команды возвращается ошибка, указывающая на неверность пути, перестройте команду, вставив в нее путь, полученный первой командой. Вот так: Add-AppxPackage -DisableDevelopmentMode -Register "Microsoft.WindowsStore_11910.1002.513.0_neutral_~_8wekyb3d8bbwe\AppxManifest.xml". Используйте путь к последней версии приложения.

Как восстановить Магазин Windows 10 после удаления-4

Способ 2: Установка вручную

Если команда Add-AppxPackage вернет сообщение «Путь не найден», «Не удается зарегистрировать пакет Microsoft.WindowsStore. Ошибка слияния», скорее всего, Магазин Windows удален полностью. В этом случае его можно попробовать установить в ручном режиме, скачав установочный файл с сервера Microsoft.

  1. Зайдите в Windows Store в любом браузере, найдите там приложение Магазин Майкрософт и скопируйте ссылку на страницу с приложением.
  2. Как восстановить Магазин Windows 10 после удаления-5

  3. Перейдите на сайт онлайн-генератора ссылок для Microsoft Store, вставьте поле скопированный URL и нажмите кнопку с галочкой.
  4. Открыть сайт генератора ссылок Microsoft Store

    Как восстановить Магазин Windows 10 после удаления-6

  5. Сервис выдаст список ссылок на установочные файлы, среди которых нужно найти и скачать файл с названием «Microsoft.WindowsStore…» и расширением «.appxbundle». Чтобы загрузить файл, кликните по нему правой кнопкой мыши и выберите в меню «Сохранить ссылку как…».
  6. Как восстановить Магазин Windows 10 после удаления-7

  7. Запустите скачанный файл двойным кликом и нажмите кнопку «Установить».
  8. Как восстановить Магазин Windows 10 после удаления-8

Подробнее: Установка приложений формата Appxbundle в Windows 10

Не исключено, для работы приложения понадобится установить актуальные версии компонентов «Microsoft.NET.Native.Framework», «Microsoft.NET.Native.Runtime», «Microsoft.VCLibs» и «Microsoft.UI.Xaml». Скачать и установить их можно тем же способом, что и файл Магазина.

Способ 3: Копирование с другого компьютера

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

  1. На компьютере с установленным Магазином перейдите в «Проводнике» в расположение C:\Program Files , переключитесь на вкладку «Вид» и включите отображение скрытых элементов.
  2. Как восстановить Магазин Windows 10 после удаления-9

  3. Получите полные права на скрытую папку «WindowsApps», зайдите в нее и скопируйте каталог «Microsoft.WindowsStore_11910.1002.5.0_neutral_split.language-ru_8wekyb3d8bbwe» (версия может отличаться) на флешку. Лучше даже скопировать всю папку WindowsApps, так как она может содержать необходимые для работы Магазина зависимости.

    Подробнее: Получение полных прав на папку в Windows 10

  4. Как восстановить Магазин Windows 10 после удаления-10

  5. Перенесите скопированный каталог на компьютер с удаленным Магазином, получив полные права на указанные выше системные каталоги. Если решите перенести папку «WindowsApps» целиком, согласитесь на замену файлов.
  6. Запустив от имени администратора «PowerShell», перерегистрируйте все UWP-приложения командой ForEach ($folder in get-childitem) {Add-AppxPackage -DisableDevelopmentMode -Register "C:\Program Files\WindowsApps\$folder\AppxManifest.xml"}.
  7. Как восстановить Магазин Windows 10 после удаления-11.1

  8. Закрепите, если нужно, ярлык Магазина Windows на «Панели задач» из меню кнопки «Пуск».
  9. Как восстановить Магазин Windows 10 после удаления-11

Способ 4: Обновление Windows

Еще одним способом решения проблемы с отсутствием Магазина является обновление операционной системы до новой версии. Для обновления лучше всего использовать скачанный с официального сайта Microsoft установочный ISO-образ. Смонтировав двойным кликом образ в «Проводнике», запустите исполняемый файл «setup.exe» и проследуйте дальнейшим указаниям мастера.

Подробнее:
Обновление Windows 10 до последней версии
Установка новой версии Windows 10 поверх старой

Как восстановить Магазин Windows 10 после удаления-12

Наша группа в TelegramПолезные советы и помощь

Клиент OpenSSH и сервер OpenSSH являются отдельными устанавливаемыми компонентами в Windows Server 2019 и Windows 10 1809. Чтобы установить сервер, открываем последовательно Параметры → Приложения → Приложения и возможности → Дополнительные возможности → Добавить компонент. Находим в списке компонент «Cервер OpenSSH» и нажимаем кнопку «Установить».

Установка сервера OpenSSH создаст и включит правило брандмауэра, которое разрешает входящий трафик SSH через порт 22.

Запускаем службу, при необходимости в Свойствах устанавливаем Автозапуск:

Проверяем подключение по ssh с другого компьютера:

$ ssh Evgeniy@192.168.110.2
The authenticity of host '192.168.110.2 (192.168.110.2)' can't be established.
ECDSA key fingerprint is SHA256:SUosMa1VPeeaxU0Uyo5nG0EKkVEifMWYshHqRGIiz7I.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.110.2' (ECDSA) to the list of known hosts.
Evgeniy@192.168.110.2's password: пароль

По умолчанию для сервера OpenSSH в ОС Windows используется командная оболочка Windows.

Настройка сервера OpenSSH

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

  • Исполняемые файлы OpenSSH: C:\Windows\System32\OpenSSH\
  • Конфигурационный файл sshd_config: C:\ProgramData\ssh\
  • Журнал OpenSSH: C:\ProgramData\ssh\logs\sshd.log
  • Файл authorized_keys и ключи: ~\.ssh\
  • При установке в системе создается новый пользователь sshd

Следующие директивы в sshd_config разрешают доступ по ключам и по паролю:

# разрешает доступ по ключам
PubkeyAuthentication yes
# разрешает доступ по паролю
PasswordAuthentication yes
# доступ с пустым паролем запрещен
PermitEmptyPasswords no

Можно изменить порт, на котором принимает подключения OpenSSH сервер:

Port 2222

После любых изменений в конфигурационном файле нужно перезапустить службу. Если был изменен порт — нужно еще изменить правило брандмауэра.

Установка с использованием PowerShell

Запускаем PowerShell от имени администратора. Проверяем, что OpenSSH сервер и клиент доступны для установки:

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

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

Клиент уже был установлен ранее, а сервер — еще нет. Запускаем установку сервера:

> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

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

> Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Запустить, остановить или перезапустить службу:

> Start-Service sshd
> Stop-Service sshd
> Restart-Service sshd

Изменить тип запуска службы на Автоматический:

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

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

> Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
> Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Поиск:
CLI • SSH • Windows • Команда • Конфигурация • Настройка • Сервер

Каталог оборудования

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Производители

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Функциональные группы

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Hello, how are you? In the previous article, we saw how to enable Telnet in Windows Server. This protocol is very useful, but it has a serious security breach. For that reason, we recommend using the SSH connection. It is a remote administration protocol that allows users to control and modify their remote servers over the Internet. To do this, it uses an authentication mechanism. The protocol works by authenticating a remote user and transferring inputs from the client to the host. It then retransmits the output back to the client. But most importantly, the communication is delivered encrypted so the security is much higher than Telnet. In view of the above, let’s see how to install an SSH client and server in Windows 10.

Prerequisite

In order to enjoy all the benefits of this protocol, it is necessary to have a Windows version equal to or greater than 1803.

Installing the SSH client

First, let’s verify the SSH client installation. With this intention, enter in Windows Settings pressing the combination Win+I. Once there, select Apps

Entering the Apps section

Entering the Apps section

Then click on Optional features.

Select optional features

Select optional features

In the next window, you will see all the optional functions. Then scroll down to find the OpenSSH Client. In this case, the client is already installed, so there is nothing else to do. In case it is not, just click on the install button.

Installing the SSH client

Installing the SSH client

Add SSH server in Windows 10

From the previous screen please click on Add a feature:

Adding Features

Adding Features

Now scroll down and select OpenSSH Server. Press install and wait a few seconds while the function is installed. Once the action is executed, please restart the computer to confirm the changes.

Install the OpenSSH server

Install the OpenSSH server

Configure OpenSSH Server to start with Windows.

From now on the client and the SSH server are installed. For the SSH server to be activated every time we start Windows we will have to do the following. Press the Win+R combination and run services.msc

Run services.msc

Then scroll down and select OpenSSH SSH Server and OpenSSH Authentication Agent:

Select the two SSH services

Select the two SSH services

Now what we are going to do is to activate them so that they start every time you start Windows. With that intention double-click on OpenSSH Authentication Agent and in the startup type select Automatic. Then press Apply and finally accept.

Setting the automatic startup of OpenSSH Authentication Agent

Setting the automatic startup of OpenSSH Authentication Agent

We will repeat this procedure with the OpenSHH SSH Server Service

Setting the automatic startup of OpenSHH SSH Server

Setting the automatic startup of OpenSHH SSH Server

As we did in the previous step, restart the computer to set the changes. With these steps, we will be able to install the server and the SSH client in Windows 10.

Testing the SSH client and server

After restarting the computer, it is necessary to verify if the SSH services are active. To do this, open a PowerShell as administrator by pressing the Win+X combination.

Runs a PowerShell as administrator.

Then execute the following command:

 Get-Service -Name *ssh* 

If all goes well, you will see the next result in the PowerShell, showing the two services running:

Configuring the Windows firewall

In order to have access to our computer through SSH we have to configure the Windows Firewall. To do this we open a PowerShell as administrator and execute the following command:

.\netsh advfirewall firewall add rule name="SSHD Port" dir=in action=allow protocol=TCP localport=22 
Opening port 22 to allow SSH connections:

Opening port 22 to allow SSH connections:

It then tests whether the SSH server is listening on port 22. For this purpose, from a PowerShell with administrator privileges runs the following command:

.\netstat -bano | .\more.com

Connect to an SSH server from Windows.

From now on we can connect remotely to an SSH server. To execute it, it is necessary to know 3 parameters:

  • User name
  • Server IP Address
  • Know the port where the SSH server is listening. In this case, the port is 22.
  • User password

Once this data is known, open a PowerShell and run the following command:

 ssh -p 22 [email protected]

Then add the password to access the remote computer. And you will have access via PowerShell to the SSH server.

Accessing an SSH server from the Windows 10 PowerShell.

Accessing an SSH server from the Windows 10 PowerShell.

Conclusion

Finally, we have seen how to install an SSH client and server in Windows 10. This way we will be able to remotely manage any device that uses this protocol. Additionally, security is increased because the communication between host and client is encrypted. In this way, our data remains safe from possible attackers. This is all for the moments, before saying goodbye I want to invite you to see our post about Telnet in Windows Server.

— Advertisement —

Everything Linux, A.I, IT News, DataOps, Open Source and more delivered right to you.

Subscribe

«The best Linux newsletter on the web»

Starting with Windows 10 build 1709, Windows integrates a port of OpenSSH, client and server.

This note describes how to install and configure the OpenSSH server sshd and run PowerShell scripts on a remote Windows server, from a Unix system, using SSH and public key authentication (no password).

Note: The way OpenSSH has been integrated in Windows 10 has changed a lot between versions 1709 and 21H2 of Windows 10. The Gist was updated several times to reflect the changes. This version applies to Windows 10 21H2.

OpenSSH server installation

First, open a PowerShell window with administrator privileges.

Check if OpenSSH server is installed:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

Here, the client is installed but not the server. This is the default configuration.

Install the server package (use the displayed name if a more recent version is available):

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Start the sshd service:

Start-Service sshd

Enable sshd automatic startup:

Set-Service -Name sshd -StartupType 'Automatic'

Check if the firewall rule for SSH is configured:

Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP"

In case of error, add the firewall rule:

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

User configuration on the Windows server

To allow public key authentication, each user has to create the same type of authorized_keys file as on any Unix system. On Windows, the name of the file is C:\Users\_user_name_\.ssh\authorized_keys.

Create the .ssh subdirectory and the authorized_keys file with the list of allowed public keys.

On Unix systems, the authorized_keys file must have the protection mask 0600 or -rw-------. Similarly, the protection of the authorized_keys file must be manually adjusted on Windows.

Open a PowerShell window using your own user account and run the following commands:

$acl = Get-Acl ${env:HOMEDRIVE}${env:HOMEPATH}\.ssh\authorized_keys
$acl.SetAccessRuleProtection($true, $false)
$rule = New-Object system.security.accesscontrol.filesystemaccessrule($env:USERNAME,"FullControl","Allow")
$acl.SetAccessRule($rule)
$acl | Set-Acl

Important: It the user is an administrator user, you need to append the public key in C:\ProgramData\ssh\administrators_authorized_keys instead. Then, fix the protextion of the file from a PowerShell window with administrator privileges:

$acl = Get-Acl ${env:ProgramData}\ssh\administrators_authorized_keys
$acl.SetAccessRuleProtection($true, $false)
$rule1 = New-Object system.security.accesscontrol.filesystemaccessrule("Administrators","FullControl","Allow")
$rule2 = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")
$acl.SetAccessRule($rule1)
$acl.SetAccessRule($rule2)
$acl | Set-Acl

Set Powershell as default shell

Now you can log in from your remote Unix systems using public key authentication and no password. The default shell is cmd.exe. To set Powershell as default shell, run the following command from a PowerShell window with administrator privileges:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Образ windows 7 начальная для флешки
  • Как заблокировать приложение на ноутбуке windows 10
  • Как выключить антивирус на windows 10 про
  • Windows 8 green edition
  • Долгая загрузка добро пожаловать windows 10