EUR
european

EUR

usa

USD

Russian Ru
Ex. VAT Ex. VAT 0%

Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

Это руководство применимо к Windows Server 2019, 2022 и 2025, в которые OpenSSH Server входит как встроенный дополнительный компонент. Загрузка стороннего ПО не требуется.

Пошаговое руководство

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

1) Запустите PowerShell от имени администратора: Пуск, введите "PowerShell" → щёлкните правой кнопкой мыши на "PowerShell" → Запуск от имени администратора.

2) Проверьте, установлен ли уже компонент OpenSSH Server:

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

Проверка, установлен ли компонент OpenSSH Server
Примечание: Здесь перечислены и OpenSSH.Client, и OpenSSH.Server. Убедитесь, что проверяете состояние именно OpenSSH.Server, клиентский компонент может быть уже установлен, но в этом руководстве речь не о нём.

Если у OpenSSH.Server отображается состояние State : NotPresent, установите его:

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

Установка компонента OpenSSH Server в PowerShell
Примечание: Windows устанавливает встроенный компонент OpenSSH Server в каталог C:\Windows\System32\OpenSSH\. Не устанавливайте OpenSSH вручную непосредственно в C:\Windows, это нарушает соглашения о каталогах Windows и может привести к проблемам с правами доступа.

3) Запустите службу sshd и настройте её на автоматический запуск:

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

4) Убедитесь, что служба запущена:

Get-Service sshd

Состояние службы sshd OpenSSH со значением Running

В поле Status должно отображаться Running. Чтобы дополнительно подтвердить, что тип запуска установлен в Automatic:

Get-CimInstance Win32_Service -Filter "Name='sshd'" | Select-Object StartMode

StartMode службы sshd со значением Auto

5) Проверьте расположение установленного двоичного файла OpenSSH и сведения о версии:

Get-Command sshd | Select-Object Source (Get-Command sshd).FileVersionInfo

Путь и сведения о версии двоичного файла sshd

Поле Source подтверждает, что путь установки соответствует C:\Windows\System32\OpenSSH\sshd.exe; FileVersionInfo показывает версию OpenSSH (например, OpenSSH_8.1p1, FileVersion 8.1.0.1 в Windows Server 2022).

Открытие порта в брандмауэре

По умолчанию при установке компонента OpenSSH Server обычно автоматически создаётся входящее правило брандмауэра с именем OpenSSH-Server-In-TCP. Убедитесь, что оно существует и включено:

Get-NetFirewallRule -Name *OpenSSH-Server*

Включённое входящее правило брандмауэра OpenSSH

Если правило отсутствует, создайте его вручную (обратите внимание на другое имя правила, это созданное вручную правило не связано с автоматически сгенерированным правилом OpenSSH-Server-In-TCP):

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

Убедитесь, что порт действительно открыт и прослушивается:

Test-NetConnection -ComputerName localhost -Port 22

Успешное выполнение Test-NetConnection на порту 22

Результат TcpTestSucceeded : True подтверждает, что служба прослушивает локально. Это не подтверждает, что брандмауэр пропускает трафик извне, для полной проверки выполните ту же команду с другого компьютера в сети, заменив localhost на IP-адрес сервера.

Настройка sshd_config для SFTP

Файл конфигурации находится по пути:

C:\ProgramData\ssh\sshd_config

Откройте его в текстовом редакторе с правами администратора (например, Notepad, запущенный от имени администратора) и убедитесь, что присутствуют следующие настройки (или настройте их по необходимости):

Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

Строка Subsystem sftp в файле sshd_config
Примечание по безопасности: PasswordAuthentication yes показано здесь, чтобы упростить руководство, но для рабочего сервера, доступного из Интернета, более безопасным выбором является аутентификация по ключам с PasswordAuthentication no. Если вы планируете использовать аутентификацию по ключам, см. необязательную настройку AuthorizedKeysFile ниже.
Важно: Строка Subsystem sftp определяет, какой двоичный файл обрабатывает сеансы SFTP. Без этой строки (присутствующей и не закомментированной) SSH-соединения будут работать, но передача файлов по SFTP завершится сбоем.

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

Примечание: Более новые версии OpenSSH также поддерживают Subsystem sftp internal-sftp, встроенный обработчик, который не вызывает внешний двоичный файл:

Subsystem sftp internal-sftp

Работает как sftp-server.exe, так и internal-sftp; в этом руководстве используется sftp-server.exe, так как это значение поставляется по умолчанию.

Необязательные настройки, которые вы также можете включить в sshd_config:

# Значение по умолчанию, уже задано; показано здесь для справки, если аутентификация по ключам не работает # AuthorizedKeysFile .ssh/authorized_keys # Ограничить доступ определёнными пользователями (необязательно) # AllowUsers username1 username2 # Журналирование SyslogFacility LOCAL0 LogLevel INFO

Примечание: Для учётных записей, входящих в локальную группу «Администраторы», порт OpenSSH для Windows использует другой файл: C:\ProgramData\ssh\administrators_authorized_keys, а не .ssh\authorized_keys в профиле пользователя. Если аутентификация по ключам для учётной записи администратора не работает должным образом, проверьте вместо этого данный файл.

После любого изменения sshd_config перезапустите службу, чтобы применить его:

Restart-Service sshd

Проверка SFTP-соединения с помощью WinSCP

Установите и запустите бесплатный клиент WinSCP. В окне настроек соединения выберите протокол передачи файлов SFTP, введите имя узла или IP-адрес сервера в поле Host name, оставьте в поле Port number значение 22 (если вы не настроили другой порт) и введите учётные данные той учётной записи Windows, под которой вы подключаетесь.

Окно входа WinSCP с выбранным протоколом SFTP

Если всё настроено правильно, клиент подключается к SFTP-серверу и отображает содержимое домашнего каталога пользователя (каталога профиля по умолчанию). По умолчанию пользователь попадает в C:\Users\<username>. После этого файлы можно безопасно передавать между сервером и клиентом по протоколу SFTP.

WinSCP, подключённый к SFTP-серверу, отображает домашний каталог

Удаление компонента OpenSSH Server

1) Запустите PowerShell от имени администратора.

2) Остановите службу sshd перед удалением компонента, удаление при запущенной или активно используемой службе может завершиться сбоем или зависнуть:

Stop-Service sshd

3) Удалите компонент:

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

4) (Необязательно) Удалите правило брандмауэра. Это охватывает как автоматически созданное, так и созданное вручную правило, на случай если какое-либо из них существует:

Remove-NetFirewallRule -Name OpenSSH-Server-In-TCP -ErrorAction SilentlyContinue Remove-NetFirewallRule -DisplayName 'OpenSSH Server (sshd)' -ErrorAction SilentlyContinue

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

Чтобы удалить только sshd_config, не затрагивая ключи узла:

Remove-Item -Path 'C:\ProgramData\ssh\sshd_config' -Force

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

Remove-Item -Path 'C:\ProgramData\ssh' -Recurse -Force

Предупреждение: При удалении всего каталога также безвозвратно удаляются ключи узла сервера. Клиенты, подключающиеся после переустановки, будут расценивать сервер как новый, неизвестный SSH-узел. Делайте это только если не планируете переустанавливать OpenSSH Server с той же конфигурацией в дальнейшем.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA