Как включить и настроить SSH-сервер в Windows с помощью OpenSSH

Admin

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

Содержание:

  • Как установить сервер OpenSSH в Windows?
  • Настройка SSH-сервера в Windows
  • Sshd_config: файл конфигурации сервера OpenSSH
  • Как подключиться к удаленному компьютеру с Windows через SSH?
  • Проверка журналов подключения SSH в Windows

Как установить сервер OpenSSH в Windows?

Пакет OpenSSH Server входит в состав всех современных версий Windows 10 (начиная с 1803), Windows 11 и Windows Server 2022/2019 в качестве Функция по запросу (ФД). Чтобы установить сервер 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 10/11 через современный Настройки панель (Настройки -> Приложения и функции -> Дополнительные функции -> Добавить функцию). Находить Открытый SSH-сервер в списке и нажмите Установить.

установить сервер openssh на windows 10 через приложение настроек
Вы также можете установить средства удаленного администрирования сервера (RSAT) отсюда.

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

Add-WindowsCapability -Name OpenSSH.Server~~~~0.0.1.0 -Online -Source E:\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 $HOME\Downloads\OpenSSH-Win64-v8.9.1.0.msi

скачайте и запустите установщик openssh msi на windows
Вы можете установить сервер OpenSSH и в предыдущих версиях Windows (Windows 8.1, Windows Server 2016/2012R2/2012). Посмотрите пример по установке и настройке Win32-OpenSSH в статье «Как настроить SFTP-сервер (SSH FTP) в Windows?”.

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

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

Состояние: установлено
проверьте функцию сервера openssh, установленную в Windows Get-WindowsCapability

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

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

  • ssh-агент (Агент аутентификации OpenSSH) — может использоваться для управления закрытыми ключами, если вы настроили аутентификацию по ключу SSH;
  • sshd (SSH-сервер OpenSSH).

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

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

запустить службу sshd в виндовс 10
Используйте команду netstat, чтобы убедиться, что SSH-сервер работает и ожидает подключения к TCP-порту 22:
netstat -na| find ":22"
проверьте ssh tcp port 22 прослушивание на windows 10
Убедитесь, что брандмауэр Защитника Windows разрешает входящие подключения к Windows через TCP-порт 22:
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

Имя DisplayName Описание Включено. OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Входящее правило для OpenSSH SSH Server (sshd) True
открыть входящий порт ssh в брандмауэре защитника windows

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

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

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

  • Исполняемые файлы сервера OpenSSH: C:\Windows\System32\OpenSSH\(sshd.exe, ssh.exe, ssh-keygen.exe, sftp.exe и т. д.)
  • sshd_config файл (создается после первого сервисного запуска сервиса): C:\ProgramData\ssh
  • Файл author_keys и ключи можно хранить в папке профиля пользователя: %USERPROFILE%\.ssh\

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

Вы можете изменить настройки сервера OpenSSH в файле конфигурации: %programdata%\ssh\sshd_config. Это обычный текстовый файл с набором директив. Вы можете использовать любой текстовый редактор для редактирования:

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

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

DenyUsers woshub\[электронная почта защищена]
DenyUsers corp\*

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

AllowGroups woshub\sshadmins

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

Алловгруппы sshadmins

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

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

Администраторы DenyGroups

Следующие директивы позволяют получить доступ к Windows, используя закрытые ключи SSH или пароль.

PubkeyАутентификация да. Аутентификация по паролю да

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

Файл %programdata%\ssh\sshd_config в Windows
После внесения любых изменений в файл sshd_config необходимо перезапустить службу sshd

restart-service sshd

Как подключиться к удаленному компьютеру с Windows через SSH?

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

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

ssh [email protected]

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

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

  • [email protected]локальный пользователь Windows
  • [email protected]@server1 – Пользователь Active Directory или учетная запись Microsoft/Azure (используйте UserPrincipalName формат)
  • woshub\[email protected] – Формат имени NetBIOS

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

GSSAPIAАутентификация да

Теперь вы можете прозрачно подключаться к SSH-серверу из присоединенная к домену машина Windows с сеансом пользователя домена. В этом случае пароль пользователя запрашиваться не будет, а будет выполняться SSO-аутентификация через Kerberos:
ssh -K server1

При первом подключении вам будет предложено добавить хост в список известных хостов SSH (C:\Users\your_user\.ssh\known_hosts).

шпатлевка принимает ключ rsa для сервера ssh

Нажмите Yesи войдите под своей учетной записью Windows.

войти в windows 10 через ssh как в linux

Если соединение SSH установлено успешно, вы увидите приглашение оболочки cmd.exe.

[электронная почта защищена] C:\Пользователи\Администратор>
Оболочка cmd.exe в сеансе Windows ssh

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

запустить команду в windows 10 через ssh

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

powershell.exe

запустить powershell в windows ssh

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

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

New-ItemProperty заменяет оболочку ssh с cmd.exe на powershell.exe

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

консоль powershell в сеансе ssh windows 10

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

Сервер OpenSSH в Windows можно использовать в различных SSH-туннелирование сценарии.

Проверка журналов подключения SSH в Windows

По умолчанию в Windows журналы подключения к SSH-серверу записываются не в текстовые файлы, а в отдельный журнал событий через Event Tracing for Windows (ETW). Откройте консоль просмотра событий (eventvwr.msc ) и перейдите к Журналы приложений и служб -> OpenSSH -> Оперативный.

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

Идентификатор события: 4. sshd: принятый пароль для root от 192.168.1.53 порт 65749 ssh2
Журналы подключения sshd в средстве просмотра событий Windows

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

sshd: Принят открытый ключ для locadm с порта 192.168.1.53 61426

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

SyslogFacility LOCAL0. ИНФОРМАЦИЯ об уровне журнала

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

Файл sshd.log сервера openssh в Windows
Ты можешь использовать безопасное SSH-соединение с PSRemoting управлять удаленными компьютерами через WinRM.

ИСПРАВЛЕНИЕ: не удается отключить тачпад в Windows 10
ИСПРАВЛЕНИЕ: не удается отключить тачпад в Windows 10

Если вы используете внешнее указывающее устройство с ноутбуком с Windows 10, вы, вероятно, не зах...

4 исправления, когда вы не можете подключить сетевой диск в Windows 10
4 исправления, когда вы не можете подключить сетевой диск в Windows 10

Подключение сетевого диска имеет много преимуществ, особенно если вы хотите быстрее передавать фа...

Как исправить, что жесткий диск не отображается в Windows 10
Как исправить, что жесткий диск не отображается в Windows 10

Когда вы подключаете внутренний жесткий диск (HDD), твердотельный накопитель (SSD), или любой вне...