Instalacja i konfiguracja serwera SFTP (SSH FTP) w systemie Windows w oparciu o OpenSSH

Korzystając z oficjalnego pakietu OpenSSH dla systemu Windows, możesz łatwo zorganizować bezpieczną wymianę plików między klientem a serwerami Windows za pomocą bezpiecznego protokołu przesyłania plików SFTP (Bezpiecznie FTP). W tym artykule pokażemy, jak używać Win32-OpenSSH do zainstalowania serwera SFTP w systemie Windows 10 lub Windows Server 2016 / 2012R2.

Treść

  • Funkcje SFTP
  • Wdrażanie SFTP w systemach Windows
  • Instalowanie Win32 OpenSSH na Windows 10 1803 + / Windows Server 2019
  • Instalowanie Win32 OpenSSH w systemie Windows Server 2016/2012 R2
  • Testowanie połączenia SFTP za pomocą WinSCP
  • Usuwanie usługi Win32 OpenSSH

Funkcje SFTP

Protokół SFTP (Bezpieczny protokół przesyłania plików , Bezpieczny FTP lub SSH FTP) jest rozszerzeniem protokołu SSH, który jest standardem w świecie systemów UNIX / Linux. Chociaż z punktu widzenia użytkowników jest podobny do FTP, ale w rzeczywistości jest to zupełnie inny protokół, który nie ma nic wspólnego z FTP. Dane między klientem a serwerem są przesyłane przez port 22 przez tunel SSH.

Kluczowe zalety SFTP:

  • Pliki i polecenia są przesyłane w bezpiecznej sesji SSH;
  • Pojedyncze połączenie służy do przesyłania plików i poleceń;
  • Obsługa dowiązań symbolicznych, przerywania, wznawiania, przesyłania, usuwania plików itp.;
  • Z reguły na kanałach, na których FTP jest wolny lub przerywany, połączenie SFTP jest bardziej niezawodne i szybsze;
  • Uwierzytelnianie za pomocą kluczy SSH.
Nie trzeba mylić SFTP i FTPS. FTPS jest zasadniczo zwykłym FTP z certyfikatem SSL, podczas gdy SFTP to transfer danych FTP i poleceń wewnątrz SSH.

Wdrażanie SFTP w systemach Windows

Historycznie w systemach operacyjnych Windows brakowało wbudowanych narzędzi do organizowania bezpiecznego serwera SFTP. Do tych celów zwykle używane były rozwiązania otwarte lub komercyjne, na przykład Core FTP, FileZilla, CYGWIN, OpenSSH, Shell Shell, IPSwitch itp. Jednak kilka lat temu Microsoft wydał swoją wersję portu OpenSSH dla win32. Ten projekt nazywa się Win32-openssh.

Rozważ proces konfigurowania serwera SFTP w systemie Windows 10 i Windows Server 2016/2012 R2 przy użyciu pakietu Win32-OpenSSH.

Instalowanie Win32 OpenSSH na Windows 10 1803 + / Windows Server 2019

W systemie Windows 10, począwszy od kompilacji 1803, oraz w systemie Windows Server 2019 pakiet OpenSSH (jak RSAT) jest już zawarty w systemie operacyjnym jako Feature on Demand (FoD).

W systemie Windows 10 i Windows Server 2019 można zainstalować serwer OpenSSH za pomocą polecenia cmdlet programu PowerShell:

Dodaj-Windows Możliwości -Online -Nazwa OpenSSH.Server *

Lub używając DISM:
dism / Online / Add-Capability /CapabilityName:OpenSSH.Server~~.0.0.0.0

Lub możesz zainstalować OpenSSH z GUI systemu Windows 10 (Ustawienia -> Aplikacje -> Funkcje opcjonalne -> Dodaj funkcję -> Otwórz serwer ssh -> Zainstaluj).

Pliki wykonywalne OpenSSH znajdują się w katalogu:

c: \ windows \ system32 \ OpenSSH \

Plik konfiguracyjny sshd_config znajduje się w katalogu C: \ ProgramData \ ssh (katalog jest tworzony po pierwszym uruchomieniu usługi).

Log - c: \ windows \ system32 \ OpenSSH \ logs \ sshd.log

Plik uprawniony z kluczami i klucze są przechowywane w% USERPROFILE% \. Ssh \.

Dowiedz się więcej o korzystaniu z OpenSSH do łączenia się z Windows 10 / Windows Server 2019 przez bezpieczny tunel SSH..

Instalowanie Win32 OpenSSH w systemie Windows Server 2016/2012 R2

W poprzednich wersjach systemu Windows 10 i Windows Server 2016/2012 R2 należy pobrać i zainstalować OpenSSH z GitHub (https://github.com/PowerShell/Win32-OpenSSH/releases). Potrzebujemy wersji 64-bitowej wersji systemu Windows: Openssh-Win64.zip (3,5 Mb).

  1. Rozpakuj zawartość archiwum do katalogu docelowego, na przykład: C: \ OpenSSH-Win
  2. Uruchamiamy wiersz poleceń PowerShell z uprawnieniami administratora i przechodzimy do katalogu OpenSSH:Cd C: \ OpenSSH-Win
  3. Dodaj ścieżkę do katalogu OpenSSH do zmiennej środowiskowej Path;
  4. Zainstaluj serwer OpenSSH: .\ install-sshd.ps1 (powinien pojawić się zielony komunikat „Pomyślnie zainstalowano usługi sshd i ssh-agent)”;
  5. Wygeneruj klucze SSH dla serwera (potrzebne do uruchomienia usługi sshd):ssh-keygen.exe -A 
    ssh-keygen: generowanie nowych kluczy hosta: RSA DSA ECDSA ED25519

    Gdy wystąpi błąd

     ssh-keygen: generowanie nowych kluczy hosta: RSA Nie można zapisać twojego klucza publicznego w __PROGRAMDATA __ \\ ssh / ssh_host_rsa_key.bxKmOcF49P: Brak takiego pliku lub katalogu

    , upewnij się, że utworzono katalog% programdata% \ ssh.

  6. Włącz autorun dla usługi SSHD i uruchom ją za pomocą następujących poleceń zarządzania usługą PowerShell:Set-Service -Name sshd -StartupType 'Automatic'
    Start-Service sshd
  7. Za pomocą programu PowerShell otwórz port TCP 22 w zaporze systemu Windows dla ruchu przychodzącego na serwer SSH:New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
  8. Otwórz plik konfiguracyjny „C: \ ProgramData \ SSH \ sshd_config” w dowolnym edytorze tekstu, znajdź i sprawdź wartość dyrektywy Podsystem sftp. Plik należy podać tutaj. sftp-server.exe. Rozważ przydatne dyrektywy w pliku konfiguracyjnym sshd_config:
    AllowGroups corp \ admingroup # zezwól na dostęp do OpenSSH tylko dla użytkowników z tej grupy AuthenticationMethods hasło # włącz uwierzytelnianie hasła (nie można używać kluczy SSH) ForceCommand internal-sftp # ChrootDirectory C: \ inetpub \ wwwroot \ ftpfolder # katalog domyślny dla użytkowników SFTP 

Testowanie połączenia SFTP za pomocą WinSCP

Spróbujmy połączyć się z serwerem SSH, który podnieśliśmy za pomocą protokołu SFTP. Do tych celów skorzystamy z bezpłatnego klienta Winscp.

W oknie ustawień połączenia wybierz protokół przesyłania plików SFTP, określ nazwę serwera i dane konta Windows, na którym nawiązywane jest połączenie (można również skonfigurować autoryzację klucza).Podczas pierwszego połączenia zostanie wyświetlone okno z ostrzeżeniem, że klucz hosta nie znajduje się w lokalnej pamięci podręcznej.

Jeśli wszystko jest poprawnie skonfigurowane, klient musi połączyć się z serwerem SFTP i wyświetlić listę plików w katalogu osobistym użytkownika (domyślnie katalog z profilem użytkownika).

Korzystając ze znanego interfejsu menedżera plików, możesz bezpiecznie kopiować pliki między serwerem a klientem. Pliki zostaną przesłane przy użyciu bezpiecznego protokołu SFTP.

Usuwanie usługi Win32 OpenSSH

Aby poprawnie usunąć usługę Win32 OpenSSH z systemu:

  1. Otwórz konsolę administracyjną Powershell
  2. Zatrzymaj usługę SSHD:Sshd Stop-Service
  3. Usuń usługę OpenSSD: Usuń klucze:.\ uninstall-sshlsa.ps1
    sshd pomyślnie odinstalowano ssh-agent pomyślnie odinstalowano