Instalacija, testiranje i deinstalacija SFTP poslužitelja temeljenog na OpenSSH-u u Windowsu
Ovaj vodič odnosi se na Windows Server 2019, 2022 i 2025, koji uključuju OpenSSH Server kao ugrađenu opcionalnu značajku. Nije potrebno preuzimanje treće strane.
Vodič korak po korak
Instalacija značajke OpenSSH Server
1. Pokrenite PowerShell kao administrator: Start, upišite "PowerShell" → desni klik na "PowerShell" → Pokreni kao administrator.
2. Provjerite je li značajka OpenSSH Servera već instalirana:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*' | Select-Object Name, State

Ovdje su navedeni i OpenSSH.Client i OpenSSH.Server. Obavezno provjerite stanje OpenSSH.Server, jer klijentska komponenta možda je već instalirana i ovaj vodič je ne pokriva.
Ako OpenSSH.Server prikazuje stanje: NotPresent, instalirajte ga:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Windows instalira ugrađenu značajku OpenSSH Servera u C:\Windows\System32\OpenSSH\. Nemojte ručno instalirati OpenSSH izravno u C:\Windows, jer to krši konvencije Windows direktorija i može uzrokovati probleme s dozvolama.
3. Pokrenite uslugu sshd i postavite je da se pokreće automatski:
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic'
4. Provjerite radi li usluga:
Get-Service sshd

U polju Status trebala bi pisati Pokrenuto. Također provjerite je li tip pokretanja postavljen na Automatski:
Get-CimInstance Win32_Service -Filter "Name='sshd'" | Select-Object StartMode

5. Provjerite lokaciju instalirane OpenSSH binarne datoteke i informacije o verziji:
Get-Command sshd | Select-Object Source (Get-Command sshd).FileVersionInfo

Polje Izvor potvrđuje da se putanja instalacije podudara s C:\Windows\System32\OpenSSH\sshd.exe; FileVersionInfo prikazuje verziju OpenSSH-a (na primjer, OpenSSH_8.1p1, FileVersion 8.1.0.1 na Windows Serveru 2022).
Otvaranje porta vatrozida
Zadano, instalacija značajke OpenSSH Servera obično automatski stvara pravilo vatrozida za dolazni promet nazvano OpenSSH-Server-In-TCP. Potvrdite da ono postoji i da je omogućeno:
Get-NetFirewallRule -Name *OpenSSH-Server*

Ako pravilo nedostaje, stvorite ga ručno (obratite pozornost na drugačiji naziv pravila, ovo ručno stvoreno pravilo odvojeno je od automatski generiranog pravila OpenSSH-Server-In-TCP ):
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Provjerite je li port doista otvoren i sluša li:
Test-NetConnection -ComputerName localhost -Port 22

Rezultat TcpTestSucceeded : True potvrđuje da usluga sluša lokalno. To ne potvrđuje da vatrozid propušta promet izvana, za potpunu provjeru pokrenite istu naredbu s drugog računala u mreži, zamijenivši localhost IP adresom poslužitelja.
Konfiguriranje sshd_config za SFTP
Konfiguracijska datoteka nalazi se na:
C:\ProgramData\ssh\sshd_config
Otvorite ga u uređivaču teksta s administratorskim pravima (na primjer, Notepad pokrenut kao administrator) i provjerite jesu li sljedeće postavke prisutne (ili konfigurirane prema potrebi):
Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

Ovdje je prikazano'PasswordAuthentication yes' kako bi ovaj vodič bio jednostavan, ali za produkcijski poslužitelj izložen internetu, autentifikacija na temelju ključa s postavkom 'PasswordAuthentication no' sigurniji je izbor. Pogledajte opcionalnu postavku 'AuthorizedKeysFile' u nastavku ako planirate koristiti autentifikaciju na temelju ključa.
Redak Subsystem sftp definira koji binarni program rukuje SFTP sesijama. Bez ovog retka, odnosno bez da je on nekomentiran, SSH veze će raditi, ali prijenos datoteka pomoću SFTP-a neće uspjeti.
Zadano je ova linija već prisutna i nije komentirana u konfiguracijskoj datoteci ugrađene značajke. Ako nedostaje ili je komentirana znakom #, dodajte je ili je odkomentirajte, a zatim spremite datoteku.
Novije verzije OpenSSH-a također podržavaju Subsystem sftp internal-sftp, ugrađeni rukovatelj koji ne poziva vanjsku binarnu datoteku:
Subsystem sftp internal-sftp
Radi i sftp-server.exe i internal-sftp; ovaj vodič koristi sftp-server.exe jer je to vrijednost koja se isporučuje prema zadanim postavkama.
Dodatne postavke koje biste također mogli željeti u 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
Za račune koji su članovi lokalne grupe Administratori, Windows port OpenSSH-a koristi drugu datoteku: C:\ProgramData\ssh\administrators_authorized_keys, a ne .ssh\authorized_keys u korisničkom profilu. Ako autentifikacija na temelju ključa za administratorski račun ne radi kako se očekuje, provjerite ovu datoteku.
Nakon bilo kakve izmjene u sshd_config, ponovno pokrenite uslugu kako bi se promjene primijenile:
Restart-Service sshd
Provjera SFTP veze pomoću WinSCP-a
Instalirajte i pokrenite besplatni klijent WinSCP. U prozoru za postavke veze odaberite SFTP protokol za prijenos datoteka, unesite naziv domaćina ili IP adresu poslužitelja u polje Naziv domaćina, ostavite polje Broj luke na 22 (osim ako niste konfigurirali drugu luku) i unesite vjerodajnice Windows računa s kojim se povezujete.

Ako je sve ispravno postavljeno, klijent se povezuje sa SFTP poslužiteljem i prikazuje sadržaj korisnikove početne mape (zadane mape profila). Prema zadanim postavkama, korisnik se nalazi u mapi C:\Users\<korisničko ime>. Datoteke se zatim mogu sigurno prenositi između poslužitelja i klijenta putem SFTP protokola.

Deinstaliranje značajke OpenSSH Server
1. Pokrenite PowerShell kao administrator.
2. Zaustavite uslugu sshd prije uklanjanja značajke, jer njezino uklanjanje dok je usluga još uvijek pokrenuta ili u aktivnoj upotrebi može ne uspjeti ili dovesti do zaglavljivanja sustava:
Stop-Service sshd
3. Uklonite značajku:
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
4. (Po želji) Uklonite pravilo vatrozida. Ovo se odnosi i na automatski stvoreno pravilo i na ručno stvoreno, ako postoje:
Remove-NetFirewallRule -Name OpenSSH-Server-In-TCP -ErrorAction SilentlyContinue Remove-NetFirewallRule -DisplayName 'OpenSSH Server (sshd)' -ErrorAction SilentlyContinue
5. (Opcionalno) Uklanjanje konfiguracije: možete ukloniti samo datoteku s konfiguracijom ili obaviti potpuno čišćenje, uključujući host ključeve.
Da biste uklonili samo sshd_config bez diranja host ključeva:
Remove-Item -Path 'C:\ProgramData\ssh\sshd_config' -Force
Za potpuno čišćenje, uključujući host ključeve, umjesto toga uklonite cijelu mapu konfiguracije:
Remove-Item -Path 'C:\ProgramData\ssh' -Recurse -Force
Kloniranje cijelog direktorija također trajno briše host ključeve poslužitelja. Klijenti koji se povežu nakon ponovne instalacije tretirat će poslužitelj kao novog, neprepoznatog SSH poslužitelja. Ovo učinite samo ako ne planirate kasnije ponovno instalirati OpenSSH Server s istom konfiguracijom.