Ссылки по теме
- Подключение к Windows по SSH с помощью встроенного OpenSSH
- Настройка SSH аутентификации по ключам в Windows 10 / 2019
Начиная с Windows 10 (1809) и Windows Server 2019 в Windows добавлен компонент OpenSSH сервер.
Установка
- для установки необходим доступ к интернет
- запустите powershell с повышением привилегий
# определите точного названия компонента OpenSSH сервера Get-WindowsCapability -Online | ? Name -like "OpenSSH.*" # установите компонент Add-WindowsCapability -Online -Name "OpenSSH.Server~~~~0.0.1.0" # проверьте статус Get-WindowsCapability -Online | ? Name -like "OpenSSH.*" # настройте автозапуск сервиса и запустите его Set-Service -Name sshd -StartupType Autostart Start-Service -Name sshd
Если используется WSUS, то возможна проблема
Сбой Add-WindowsCapability. Код ошибки: 0x800f0954 Решение: Включить политику: Административные шаблоны / Система / Укажите параметры для установки необязательных компонентов и восстановления компонентов (*) Включено Альтернативный путь [ ] [ ] Не пытайтесь загрузить полезные данные из центра обновления Windows [v] Скачайте содержимое для восстановления и дополнительные компоненты ...
Ошибка 0x800f0950 означает, что не удается загрузить пакет для установки. Проверьте доступность интернет, разрешение имен.
В современных версиях 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).
На изолированных от интернета компьютерах вы можете установить компонент с 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
Также вы можете вручную установить 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
Настройка 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
С помощью nestat убедитесь, что теперь в системе запущен SSH сервер и ждет подключений на порту TCP:22 :
netstat -na| find ":22"
Проверьте, что включено правило брандмауэра (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
Если правило отключено (состоянии 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 хостов.
Нажимаем Да, и в открывшееся окне авторизуемся под пользователем Windows.
При успешном подключении запускается командная оболочка cmd.exe со строкой-приглашением.
admin@win10tst C:\Users\admin>
В командной строке вы можете выполнять различные команды, запускать скрипты и программы.
Я предпочитаю работать в командной строке PowerShell. Чтобы запустить интерпретатор PowerShell, выполните:
powershell.exe
Чтобы изменить командную оболочку (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
Осталось перезапустить SSH подключение и убедиться, что при подключении используется командный интерпретатор PowerShell (об этом свидетельствует приглашение
PS C:\Users\admin>
).
В 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
Если была выполнена аутентификация с помощью 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
Клиент 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.
Как вы уже знаете, из предыдущей статьи, Windows 10 включает в себя встроенное программное обеспечение SSH — клиент, и сервер! В этой статье мы рассмотрим, как включить SSH-сервер.
Примечание: Приложение OpenSSH Server позволит вам установить соединение с вашим компьютером с использованием протокола SSH. Это не позволит вам получить доступ к другим компьютерам в вашей сети. Чтобы подключиться к другим компьютерам, вы должны установить клиент OpenSSH.
В Windows 10, Microsoft, наконец, прислушалась к просьбам пользователей и добавила поддержку протокола OpenSSH в версии обновления Fall Creators.
На момент написания данной статьи, программное обеспечение OpenSSH, включенное в Windows 10, находится на стадии BETA. Это означает, что у него могут быть проблемы с стабильностью.
Предоставленный SSH-сервер похож на приложение Linux. На первый взгляд, он поддерживает те же функции, что и его аналог * NIX. Это консольное приложение, но оно работает как служба Windows.
Как включить сервер OpenSSH в Windows 10.
- Откройте приложение «Параметры» и перейдите в «Приложения» → «Приложения и возможности».
- Справа нажмите «Управление дополнительными компонентами».
- На следующей странице нажмите кнопку «Добавить компонент».
- В списке компонентов выберите OpenSSH Server и нажмите кнопку «Установить», это установит программное обеспечение OpenSSH Server в Windows 10
- Перезагрузите Windows 10.
Также вы можете установить клиент SSH с помощью PowerShell.
Откройте PowerShell от имени Администратора и выполните следующую команду и перезагрузите систему:
Get-WindowsCapability -Online | Where-Object{$_.Name -like “OpenSSH.Server*”}
Файлы OpenSSH Server находятся в папке c:\windows\system32\Openssh. Помимо клиентских приложений SSH, папка содержит следующие серверные инструменты:
- SFTP-server.exe
- SSH-agent.exe
- SSH-keygen.exe
- sshd.exe
- конфигурационный файл «sshd_config».
Сервер SSH настроен для работы в качестве службы.
На момент написания этой статьи он не запускается автоматически. Вам нужно включить его вручную.
Как запустить сервер OpenSSH в Windows 10.
- Откройте Службы, (нажмите клавиши Win + R и введите services.msc в поле «Выполнить») и запустите службу sshd. дважды кликните на запись sshd, чтобы открыть ее свойства.
- На вкладке «Вход в систему» см. Учетную запись пользователя, которая используется сервером sshd. В моем случае это NT Service \ sshd
- Теперь откройте командную строку или PowerShell от имени администратора .
С помощью этой команды перейдите в каталог \ Openssh
cd c:\windows\system32\Openssh
- Здесь запустите команду для создания ключей безопасности для сервера sshd:
ssh-keygen -A
Сервер Sshd сгенерирует ключи
- Теперь в командной строке введите: explorer.exe, чтобы запустить Проводник в папке OpenSSH.
- Кликните правой кнопкой мыши файл ssh_host_ed25519_key и измените владельца файла на пользователя службы sshd, например NT Service\sshd.
- Нажмите кнопку «Добавить» и добавьте разрешение «Чтение» для пользователя «NT Service\sshd».
- Теперь удалите все другие разрешения, чтобы получить что-то вроде этого:
- Нажмите «Применить» и подтвердите операцию.
- Наконец, откройте службы (нажмите клавиши Win + R и введите services.msc в поле «Выполнить») и запустите службу sshd. Она должна запустится:
Служба Sshd работает.
- Теперь необходимо разрешить использование SSH-порта в брандмауэре Windows. По умолчанию сервер использует порт 22. Запустите эту команду в командной строке или PowerShell от имени администратора:
netsh advfirewall firewall add rule name="SSHD Port" dir=in action=allow protocol=TCP localport=22
- Наконец, установите пароль для своей учетной записи пользователя, если у вас его нет.
Теперь вы можете попробовать его в действии.
Подключение к SSH-серверу в Windows 10.
Откройте свой ssh-клиент. Вы можете запустить его на том же компьютере, например, используя встроенный клиент OpenSSH или запустить его с другого компьютера в своей сети.
В общем случае синтаксис для клиента консоли OpenSSH выглядит следующим образом:
Имя пользователя ssh @ host -p
В моем случае команда выглядит следующим образом:
ssh alex_@192.168.1.126
Где alex_ — мое имя пользователя Windows, а 192.168.1.126 — это IP-адрес моего ПК с Windows 10. Я подключусь к нему с другого компьютера, Windows 10.
Вход.
Сервер запускает классические консольные команды Windows, например: more, type, ver, copy.
Но я не могу запустить FAR Manager. Он выглядит совсем сломанным:
Еще одно интересное примечание: вы можете запускать приложения с графическим интерфейсом, такие как проводник. Если вы вошли в ту же учетную запись пользователя, которую используете для SSH, они будут запускаться на рабочем столе:
Встроенный SSH-сервер определенно интересен. Он позволяет управлять компьютером сWindows 10, без установки сторонних инструментов, как rdesktop и др..
Начиная с этой версии, встроенный SSH-сервер в Windows 10 находится на стадии BETA, поэтому в будущем он должен стать, более интересным и полезным.
On older versions of Windows, i.e. Windows Vista, 7, and 8/8.1, getting SSH running wasn’t easy. You had to do quite a bit to set it up. This was true for Windows 10 up to the Creators Update. The Fall Creators Update is a different story though; you can now install OpenSSH on Windows 10 as an optional feature. You can install both the OpenSSH client, and the OpenSSH Server.
Open the Settings app and go to the Apps group of settings.
Go to the Apps & features tab and click ‘Manage optional features’.
The Manage Optional Features screen only lists language packs. To view other features that you can install, click the Add a Feature button.
Look for the OpenSSH Client or OpenSSH Server feature. Click it, and click the Install button. Wait for it to install and that’s about it. You can install either one or both OpenSSH client and OpenSSH Server using this same method. We should mention that it is in Beta so expect the usual bugs that you can expect from Microsoft.
You will have additional things to set up, but OpenSSH is there and you can use SSH now to securely connect to a server, among other things.
Uninstall OpenSSH
To uninstall OpenSSH on Windows 10, open the Settings app and go to Apps>Apps & features. Click Manage options features again. This time, scan the list of installed optional features i.e. the list that normally shows you the language packs that can be installed. OpenSSH both sever and client will appear here if they’re installed. Click it and click the Uninstall button.
Given both OpenSSH client and server are in beta, you can expect bugs but you should also be prepared for a lesser product offering. Most users will likely compare it to Putty and it doesn’t stack up just yet.
The Fall Creators Update arrived this October so this feature is more or less still in its very early stages, its infancy if you will. That’s both good and bad. Bad because it mean bugs and limited functionality and good because it means users can hope for improvements and they can hope that one day it will stack up again Putty.
The team at Microsoft responsible for developing OpenSSH has a rough road map that might give you an idea on what to expect. Mind you, this road map isn’t the most recent. Windows 10 has had support for SSH for a while now but before the Fall Creators Update, users who wanted to install OpenSSH on Windows 10 had to install it via Github. If you still haven’t upgraded to the Fall Creators Update, or you’re interested in trying the most recent versions of OpenSSH, you can do so from the project’s Github page.
Fatima Wahab
Fatima has been writing for AddictiveTips for six years. She began as a junior writer and has been working as the Editor in Chief since 2014.
Fatima gets an adrenaline rush from figuring out how technology works, and how to manipulate it. A well-designed app, something that solves a common everyday problem and looks