Instalacija, testiranje i deinstalacija SFTP poslužitelja temeljenog na OpenSSH-u u Windowsu
Ovaj se vodič odnosi na Windows Server 2019, 2022 i 2025, koji uključuju OpenSSH Server kao ugrađenu izbornu značajku. Preuzimanje softvera trećih strana nije potrebno.
Vodič korak po korak
Instalacija značajke OpenSSH Server
1) Pokrenite PowerShell kao administrator: Start, upišite "PowerShell" → desnom tipkom miša kliknite na "PowerShell" → Pokreni kao administrator.
2) Provjerite je li značajka OpenSSH Server već instalirana:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*' | Select-Object Name, State

Napomena: Ovdje su navedeni i OpenSSH.Client i OpenSSH.Server. Obavezno provjerite stanje upravo za OpenSSH.Server, klijentska komponenta možda je već instalirana i nije predmet ovog vodiča.
Ako OpenSSH.Server prikazuje stanje State : NotPresent, instalirajte ga:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Napomena: Windows instalira ugrađenu značajku OpenSSH Server u C:\Windows\System32\OpenSSH\. Nemojte instalirati OpenSSH ručno izravno u C:\Windows, to krši konvencije o direktorijima sustava Windows 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

Polje Status trebalo bi prikazivati Running. Za dodatnu potvrdu da je vrsta pokretanja postavljena na Automatic:
Get-CimInstance Win32_Service -Filter "Name='sshd'" | Select-Object StartMode

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

Polje Source potvrđuje da putanja instalacije odgovara C:\Windows\System32\OpenSSH\sshd.exe; FileVersionInfo prikazuje verziju OpenSSH (na primjer, OpenSSH_8.1p1, FileVersion 8.1.0.1 na sustavu Windows Server 2022).
Otvaranje porta vatrozida
Prema zadanim postavkama, instalacija značajke OpenSSH Server obično automatski stvara dolazno pravilo vatrozida pod nazivom OpenSSH-Server-In-TCP. Potvrdite da 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 osluškuje li:
Test-NetConnection -ComputerName localhost -Port 22

Rezultat TcpTestSucceeded : True potvrđuje da usluga osluškuje 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 servera.
Konfiguracija sshd_config za SFTP
Konfiguracijska datoteka nalazi se na:
C:\ProgramData\ssh\sshd_config
Otvorite je u uređivaču teksta s administratorskim pravima (na primjer, Notepad pokrenut kao administrator) i potvrdite da su prisutne sljedeće postavke (ili ih konfigurirajte prema potrebi):
Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

Sigurnosna napomena: PasswordAuthentication yes ovdje je prikazano kako bi vodič ostao jednostavan, ali za produkcijski server izložen internetu sigurniji je izbor provjera autentičnosti temeljena na ključevima s PasswordAuthentication no. Pogledajte neobaveznu postavku AuthorizedKeysFile u nastavku ako planirate koristiti provjeru autentičnosti temeljenu na ključevima.
Važno: Redak Subsystem sftp definira koja binarna datoteka obrađuje SFTP sesije. Bez tog prisutnog i nekomentiranog retka, SSH veze će raditi, ali prijenos datoteka putem SFTP-a neće uspjeti.
Prema zadanim postavkama ovaj je redak već prisutan i nekomentiran u konfiguracijskoj datoteci ugrađene značajke. Ako nedostaje ili je komentiran znakom #, dodajte ga ili uklonite oznaku komentara, a zatim spremite datoteku.
Napomena: Novije verzije OpenSSH podržavaju i Subsystem sftp internal-sftp, ugrađeni rukovatelj koji ne poziva vanjsku binarnu datoteku:
Subsystem sftp internal-sftp
Rade i sftp-server.exe i internal-sftp; ovaj vodič koristi sftp-server.exe jer je to vrijednost koja se isporučuje prema zadanim postavkama.
Neobavezne postavke koje biste možda željeli uključiti i u sshd_config:
# Zadana vrijednost, vec postavljena; ovdje prikazana kao referenca ako provjera autenticnosti temeljena na kljucevima ne radi # AuthorizedKeysFile .ssh/authorized_keys # Ogranicavanje pristupa na odredene korisnike (neobavezno) # AllowUsers username1 username2 # Biljezenje SyslogFacility LOCAL0 LogLevel INFO
Napomena: Za račune koji su članovi lokalne grupe Administrators, Windows verzija OpenSSH-a koristi drugu datoteku: C:\ProgramData\ssh\administrators_authorized_keys, a ne .ssh\authorized_keys u korisničkom profilu. Ako provjera autentičnosti temeljena na ključevima za administratorski račun ne radi kako se očekuje, provjerite umjesto toga ovu datoteku.
Nakon svake promjene datoteke sshd_config ponovno pokrenite uslugu kako biste je primijenili:
Restart-Service sshd
Provjera SFTP veze pomoću WinSCP-a
Instalirajte i pokrenite besplatni klijent WinSCP. U prozoru postavki veze odaberite protokol za prijenos datoteka SFTP, unesite naziv hosta ili IP adresu servera u polje Host name, ostavite polje Port number na 22 (osim ako niste konfigurirali drugi port) i unesite vjerodajnice Windows računa s kojim se povezujete.

Ako je sve ispravno konfigurirano, klijent se povezuje sa SFTP serverom i prikazuje sadržaj korisnikova osobnog direktorija (zadanog direktorija profila). Prema zadanim postavkama korisnik dolazi u C:\Users\<username>. Datoteke se zatim mogu sigurno prenositi između servera i klijenta putem SFTP protokola.

Deinstalacija značajke OpenSSH Server
1) Pokrenite PowerShell kao administrator.
2) Zaustavite uslugu sshd prije uklanjanja značajke, uklanjanje dok je usluga još pokrenuta ili u aktivnoj upotrebi može propasti ili se zaglaviti:
Stop-Service sshd
3) Uklonite značajku:
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
4) (Neobavezno) Uklonite pravilo vatrozida. Ovo pokriva i automatski stvoreno i ručno stvoreno pravilo, u slučaju da bilo koje postoji:
Remove-NetFirewallRule -Name OpenSSH-Server-In-TCP -ErrorAction SilentlyContinue Remove-NetFirewallRule -DisplayName 'OpenSSH Server (sshd)' -ErrorAction SilentlyContinue
5) (Neobavezno) Uklanjanje konfiguracije: možete ukloniti samo konfiguracijsku datoteku ili izvršiti potpuno čišćenje uključujući ključeve hosta.
Za uklanjanje samo datoteke sshd_config bez diranja ključeva hosta:
Remove-Item -Path 'C:\ProgramData\ssh\sshd_config' -Force
Za potpuno čišćenje uključujući ključeve hosta, umjesto toga uklonite cijelu mapu konfiguracije:
Remove-Item -Path 'C:\ProgramData\ssh' -Recurse -Force
Upozorenje: Uklanjanjem cijele mape trajno se brišu i ključevi hosta servera. Klijenti koji se povežu nakon ponovne instalacije tretirat će server kao novi, neprepoznati SSH host. Učinite to samo ako ne planirate ponovno instalirati OpenSSH Server s istom konfiguracijom kasnije.