Встановлення, тестування та видалення SFTP-сервера на основі OpenSSH у Windows | INTROSERV
EUR
european

EUR

usa

USD

Ukraine Ua
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

Примітка: Для облікових записів, що входять до локальної групи «Administrators», порт 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