Namestitev, testiranje in odstranitev SFTP-strežnika na podlagi OpenSSH v sistemu Windows
Ta navodila veljajo za sisteme Windows Server 2019, 2022 in 2025, ki vključujejo strežnik OpenSSH kot vgrajeno izbirno funkcijo. Prenos programske opreme tretjih ponudnikov ni potreben.
Navodila korak za korakom
Namestitev funkcije OpenSSH Server
1. Zaženite PowerShell kot skrbnik: Start, vpišite»PowerShell« → desni klik na»PowerShell« → Zaženi kot skrbnik.
2. Preverite, ali je funkcija strežnika OpenSSH že nameščena:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*' | Select-Object Name, State

Na seznamu sta navedena tako OpenSSH.Client kot OpenSSH.Server. Preverite zlasti stanje OpenSSH.Server, saj je odjemalska komponenta morda že nameščena in ta vodnik je ne obravnava.
Če OpenSSH.Server prikazuje stanje: NotPresent, ga namestite:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Windows vgrajeno funkcijo OpenSSH Server namesti v mapo C:\Windows\System32\OpenSSH\. Ne nameščajte OpenSSH ročno neposredno v mapo C:\Windows, saj to krši konvencije imenikov sistema Windows in lahko povzroči težave z dovoljenji.
3. Zaženite storitev sshd in jo nastavite, da se zažene samodejno:
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic'
4. Preverite, ali storitev deluje:
Get-Service sshd

V polju Status (Stanje) mora biti prikazano Running(Teče). Preverite tudi, ali je vrsta zagona nastavljena na Automatic (Samodejno):
Get-CimInstance Win32_Service -Filter "Name='sshd'" | Select-Object StartMode

5. Preverite lokacijo nameščenega izvedljivega datoteka OpenSSH in podatke o različici:
Get-Command sshd | Select-Object Source (Get-Command sshd).FileVersionInfo

Polje »Source« potrjuje, da se pot namestitve ujema s C:\Windows\System32\OpenSSH\sshd.exe; »FileVersionInfo« prikazuje različico OpenSSH (na primer OpenSSH_8.1p1, FileVersion 8.1.0.1 v sistemu Windows Server 2022).
Odpiranje vrat požarnega zidu
Privzeto se ob namestitvi funkcije »OpenSSH Server« običajno samodejno ustvari pravilo za vhodni promet v požarnem zidu z imenom »OpenSSH-Server-In-TCP «. Preverite, ali obstaja in ali je omogočeno:
Get-NetFirewallRule -Name *OpenSSH-Server*

Če pravilo manjka, ga ustvarite ročno (upoštevajte drugačno ime pravila; to ročno ustvarjeno pravilo je ločeno od samodejno ustvarjenega pravila OpenSSH-Server-In-TCP ):
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Preverite, ali je vrata dejansko odprta in poslušajo:
Test-NetConnection -ComputerName localhost -Port 22

Rezultat TcpTestSucceeded : True potrjuje, da storitev posluša lokalno. To še ne pomeni, da požarni zid prepušča promet iz zunanjega omrežja; za popolno preverjanje izvedite isti ukaz z drugega računalnika v omrežju, pri čemer nadomestite localhost z IP-naslovom strežnika.
Nastavitev datoteke sshd_config za SFTP
Konfiguracijska datoteka se nahaja na:
C:\ProgramData\ssh\sshd_config
Odprite jo v urejevalniku besedil z upraviteljskimi pravicami (na primer v programu Notepad, ki ga zaženete kot skrbnik) in preverite, ali so navedene naslednje nastavitve (ali so nastavljene po potrebi):
Port 22 PasswordAuthentication yes Subsystem sftp sftp-server.exe

PasswordAuthentication yes je tukaj prikazano zaradi poenostavitve tega vodnika, vendar je za produkcijski strežnik, izpostavljen internetu, avtentifikacija na podlagi ključa z nastavitv ijo PasswordAuthentication no varnejša izbira. Če nameravate uporabljati avtentifikacijo na podlagi ključa, si oglejte spodnjo izbirno nastavitev AuthorizedKeysFile.
Vrstica »Subsystem sftp« določa, kateri binarni program upravlja s seansami SFTP. Če ta vrstica ni prisotna ali ni odkomentirana, bodo povezave SSH delovale, prenos datotek prek SFTP pa bo spodletel.
Privzeto je ta vrstica že prisotna in nekomentirana v konfiguracijski datoteki vgrajene funkcije. Če manjka ali je komentirana z znakom #, jo dodajte ali odstranite komentar, nato pa shranite datoteko.
Novejše različice OpenSSH podpirajo tudi »Subsystem sftp internal-sftp«, vgrajeni program, ki ne kliče zunanjega izvedljivega programa:
Subsystem sftp internal-sftp
Deluje tako sftp-server.exe kot internal-sftp; v tem vodniku uporabljamo sftp-server.exe, saj je to privzeta vrednost.
Izbirne nastavitve, ki jih morda želite vključiti v 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, ki so člani lokalne skupine Administrators, različica OpenSSH za Windows uporablja drugo datoteko: C:\ProgramData\ssh\administrators_authorized_keys, ne pa .ssh\authorized_keys v uporabniškem profilu. Če avtentifikacija na podlagi ključa za skrbniški račun ne deluje, kot bi morala, preverite raje to datoteko.
Po vsaki spremembi v datoteki sshd_config ponovno zaženite storitev, da se spremembe uporabijo:
Restart-Service sshd
Preverjanje povezave SFTP z uporabo WinSCP
Namestite in zaženite brezplačni odjemalec WinSCP. V oknu nastavitev povezave izberite protokol za prenos datotek SFTP, v polje Ime gostitelja vnesite ime gostitelja ali IP-naslov strežnika, v polju Številka vrat pustite vrednost 22 (razen če niste nastavili drugega vrat) in vnesite poverilnice računa Windows, s katerim se povezujete.

Če je vse pravilno nastavljeno, se odjemalec poveže s strežnikom SFTP in prikaže vsebino domačega imenika uporabnika (privzeti imenik profila). Privzeto se uporabnik znajde v imeniku C:\Users\<ime uporabnika>. Datoteke se nato lahko varno prenašajo med strežnikom in odjemalcem prek protokola SFTP.

Odstranjevanje funkcije OpenSSH Server
1. Zaženite PowerShell kot skrbnik.
2. Pred odstranitvijo funkcije ustavite storitev sshd, saj lahko odstranitev, medtem ko storitev še vedno teče ali je v aktivni rabi, povzroči napako ali zamrznitev sistema:
Stop-Service sshd
3. Odstranite funkcijo:
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
4. (Neobvezno) Odstranite pravilo požarnega zidu. To velja tako za samodejno ustvarjeno pravilo kot za ročno ustvarjeno, če katero od njiju obstaja:
Remove-NetFirewallRule -Name OpenSSH-Server-In-TCP -ErrorAction SilentlyContinue Remove-NetFirewallRule -DisplayName 'OpenSSH Server (sshd)' -ErrorAction SilentlyContinue
5. (Neobvezno) Odstranjevanje konfiguracije: lahko odstranite samo konfiguracijsko datoteko ali pa opravite popolno čiščenje, vključno s ključi gostiteljev.
Če želite odstraniti le sshd_config, ne da bi posegali v ključe gostiteljev:
Remove-Item -Path 'C:\ProgramData\ssh\sshd_config' -Force
Za popolno čiščenje, vključno s ključi gostiteljev, namesto tega odstranite celotno konfiguracijsko mapo:
Remove-Item -Path 'C:\ProgramData\ssh' -Recurse -Force
Odstranitev celotne mape trajno izbriše tudi gostiteljske ključe strežnika. Odjemalci, ki se po ponovni namestitvi povežejo, bodo strežnik obravnavali kot novega, neprepoznanega SSH-gostitelja. To storite le, če ne nameravate kasneje ponovno namestiti strežnika OpenSSH z isto konfiguracijo.