Instalacja, testowanie i odinstalowywanie serwera SFTP opartego na OpenSSH w systemie Windows | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Jak skonfigurować serwer SFTP w systemie Windows za pomocą OpenSSH

Niniejszy przewodnik dotyczy systemów Windows Server 2019, 2022 i 2025, które zawierają serwer OpenSSH jako wbudowaną funkcję opcjonalną. Nie jest wymagane pobieranie oprogramowania innych producentów.

Przewodnik krok po kroku

Instalacja funkcji serwera OpenSSH

1. Uruchom program PowerShell jako administrator: Start, wpisz„PowerShell” → kliknij prawym przyciskiem myszy pozycję„PowerShell” → Uruchom jako administrator.

2. Sprawdź, czy funkcja serwera OpenSSH jest już zainstalowana:

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

Checking whether the OpenSSH Server feature is installed

Tip

Na liście powinny znaleźć się zarówno OpenSSH.Client, jak i OpenSSH.Server. Należy sprawdzić stan konkretnie dla OpenSSH.Server — komponent kliencki może być już zainstalowany i nie jest przedmiotem niniejszego przewodnika.

Jeśli OpenSSH.Server wyświetla stan: NotPresent, zainstaluj go:

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

Installing the OpenSSH Server feature in PowerShell

Warning

System Windows instaluje wbudowaną funkcję serwera OpenSSH w katalogu C:\Windows\System32\OpenSSH\. Nie należy ręcznie instalować OpenSSH bezpośrednio w katalogu C:\Windows, ponieważ narusza to konwencje katalogowe systemu Windows i może powodować problemy z uprawnieniami.

3. Uruchom usługę sshd i ustaw jej automatyczne uruchamianie:

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

4. Sprawdź, czy usługa działa:

Get-Service sshd

OpenSSH sshd service status showing Running

W polu Status powinien wyświetlać się stan Running. Aby dodatkowo sprawdzić, czy typ uruchamiania jest ustawiony na Automatic:

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

sshd service StartMode showing Auto

5. Sprawdź lokalizację zainstalowanego pliku binarnego OpenSSH oraz informacje o wersji:

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

sshd binary path and version information

Pole „Źródło” potwierdza, że ścieżka instalacji odpowiada lokalizacji C:\Windows\System32\OpenSSH\sshd.exe; pole „Informacje o wersji pliku” pokazuje wersję OpenSSH (na przykład OpenSSH_8.1p1, wersja pliku 8.1.0.1 w systemie Windows Server 2022).

Otwarcie portu zapory

Domyślnie instalacja funkcji OpenSSH Server powoduje automatyczne utworzenie reguły zapory przychodzącej o nazwie „OpenSSH-Server-In-TCP ”. Sprawdź, czy reguła ta istnieje i jest włączona:

Get-NetFirewallRule -Name *OpenSSH-Server*

OpenSSH inbound firewall rule enabled

Jeśli reguła nie istnieje, utwórz ją ręcznie (zwróć uwagę na inną nazwę reguły — ta utworzona ręcznie reguła jest odrębna od automatycznie wygenerowanej reguły OpenSSH-Server-In-TCP ):

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

Sprawdź, czy port jest rzeczywiście otwarty i nasłuchuje:

Test-NetConnection -ComputerName localhost -Port 22

Test-NetConnection to port 22 succeeded

Wynik „TcpTestSucceeded : True” potwierdza, że usługa nasłuchuje lokalnie. Nie oznacza to jednak, że zapora przepuszcza ruch z zewnątrz. Aby w pełni to zweryfikować, uruchom to samo polecenie z innego komputera w sieci, zastępując „localhost” adresem IP serwera.

Konfiguracja pliku `sshd_config` dla protokołu SFTP

Plik konfiguracyjny znajduje się w lokalizacji:

C:\ProgramData\ssh\sshd_config

Otwórz go w edytorze tekstowym z uprawnieniami administratora (na przykład w Notatniku uruchomionym jako administrator) i sprawdź, czy występują następujące ustawienia (lub czy są skonfigurowane zgodnie z potrzebami):

Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

sshd_config Subsystem sftp line

Info

Ustawienie `PasswordAuthentication yes` zostało tutaj pokazane, aby uprościć ten przewodnik, ale w przypadku serwera produkcyjnego podłączonego do Internetu bezpieczniejszym wyborem jest uwierzytelnianie oparte na kluczach z ustawieniem `PasswordAuthentication no`. Jeśli planujesz korzystać z uwierzytelniania opartego na kluczach, zapoznaj się z opcjonalnym ustawieniem `AuthorizedKeysFile` poniżej.

Warning

Wiersz „Subsystem sftp ” określa, który plik binarny obsługuje sesje SFTP. Jeśli ten wiersz nie występuje lub jest zakomentowany, połączenia SSH będą działać, ale transfer plików SFTP zakończy się niepowodzeniem.

Domyślnie wiersz ten jest już obecny i nie jest zakomentowany w pliku konfiguracyjnym wbudowanej funkcji. Jeśli go brakuje lub jest zakomentowany znakiem #, dodaj go lub usuń komentarz, a następnie zapisz plik.

Info

Nowsze wersje OpenSSH obsługują również Subsystem sftp internal-sftp, wbudowany moduł obsługujący, który nie wywołuje zewnętrznego pliku binarnego:

Subsystem sftp internal-sftp

Działa zarówno sftp-server.exe, jak i internal-sftp; w tym przewodniku używamy sftp-server.exe, ponieważ jest to wartość domyślna.

Opcjonalne ustawienia, które warto również uwzględnić w pliku sshd_config:

# Default value, already set; shown here for reference if key-based authentication isn't working # AuthorizedKeysFile .ssh/authorized_keys # Restrict access to specific users (optional) # AllowUsers username1 username2 # Logging SyslogFacility LOCAL0 LogLevel INFO

Info

W przypadku kont należących do lokalnej grupy Administratorzy port OpenSSH dla systemu Windows używa innego pliku: C:\ProgramData\ssh\administrators_authorized_keys, a nie .ssh\authorized_keys w profilu użytkownika. Jeśli uwierzytelnianie oparte na kluczu dla konta administratora nie działa zgodnie z oczekiwaniami, sprawdź ten plik.

Po wprowadzeniu jakichkolwiek zmian w pliku sshd_config należy ponownie uruchomić usługę, aby zmiany zaczęły obowiązywać:

Restart-Service sshd

Sprawdzanie połączenia SFTP za pomocą programu WinSCP

Zainstaluj i uruchom darmowego klienta WinSCP. W oknie ustawień połączenia wybierz protokół transferu plików SFTP, wprowadź nazwę hosta lub adres IP serwera w polu Nazwa hosta, pozostaw w polu Numer portu wartość 22 (chyba że skonfigurowałeś inny port) i wprowadź dane logowania konta Windows, z którego się łączysz.

WinSCP login window with SFTP protocol selected

Jeśli wszystko zostało skonfigurowane poprawnie, klient połączy się z serwerem SFTP i wyświetli zawartość katalogu domowego użytkownika (domyślny katalog profilu). Domyślnie użytkownik trafia do katalogu C:\Users\<nazwa_użytkownika>. Pliki można następnie bezpiecznie przesyłać między serwerem a klientem za pomocą protokołu SFTP.

WinSCP connected to the SFTP server showing the home directory

Odinstalowywanie funkcji serwera OpenSSH

1. Uruchom program PowerShell jako administrator.

2. Zatrzymaj usługę sshd przed usunięciem funkcji; usunięcie jej, gdy usługa nadal działa lub jest aktywna, może zakończyć się niepowodzeniem lub zawieszeniem systemu:

Stop-Service sshd

3. Usuń funkcję:

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

4. (Opcjonalnie) Usuń regułę zapory. Dotyczy to zarówno reguły utworzonej automatycznie, jak i ręcznie, jeśli któraś z nich istnieje:

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

5. (Opcjonalnie) Usunięcie konfiguracji: można usunąć tylko plik konfiguracyjny lub przeprowadzić pełne czyszczenie, w tym klucze hosta.

Aby usunąć tylko plik sshd_config bez ingerencji w klucze hosta:

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

Aby przeprowadzić pełne czyszczenie, w tym klucze hostów, usuń zamiast tego cały folder konfiguracyjny:

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

Warning

Usunięcie całego folderu powoduje również trwałe usunięcie kluczy hosta serwera. Klienci łączący się po ponownej instalacji będą traktować serwer jako nowy, nierozpoznany host SSH. Należy to zrobić tylko wtedy, gdy nie planuje się ponownej instalacji serwera OpenSSH z tą samą konfiguracją w przyszłości.

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