Het opzetten en gebruiken van een OpenSSH SFTP-server op Windows kan een hele klus zijn, vooral als je het voor de eerste keer doet. Je kunt tegen problemen aanlopen, zoals een SSH-service die niet automatisch start, firewallregels die niet geconfigureerd zijn of configuratiebestanden die niet helemaal kloppen. Het goede nieuws is dat je, als je de stappen volgt en de instellingen zorgvuldig controleert, een veilige overdrachtsconfiguratie krijgt die veel beter is dan onhandige tools van derden. Deze configuratie is vrij flexibel en werkt op alles van Windows 10 (vanaf build 1803) tot Windows Server 2022, met een paar verschillen afhankelijk van je versie. Uiteindelijk kun je veilig bestanden overdragen via SSH zonder je wachtwoorden prijs te geven of afhankelijk te zijn van onbetrouwbare FTP-opties. En zoals de meeste mensen, was de belangrijkste drijfveer voor mij simpelweg betere beveiliging en eenvoudiger beheer. Let op: afhankelijk van je Windows-versie kunnen sommige commando’s of paden iets afwijken, maar het basisprincipe blijft hetzelfde.
Hoe krijg ik OpenSSH werkend op Windows voor SFTP?
Hoe installeer je OpenSSH op Windows?
Dit is waar het met Windows een beetje vreemd wordt: soms is OpenSSH standaard ingebouwd, en soms moet je het handmatig installeren. Voor nieuwere versies van Windows 10 (zoals 1803+), Windows 11 of Windows Server 2019/2022 is OpenSSH een optionele functie. Je kunt het installeren via PowerShell, want Windows moet het natuurlijk altijd ingewikkelder maken dan nodig is.
- Open PowerShell als beheerder en voer de volgende opdracht uit:
Add-WindowsCapability -Online -Name OpenSSH. Server* - Of, als je liever via de commandoregel werkt, gebruik dan:
dism /Online /Add-Capability /CapabilityName:OpenSSH. Server~~~~0.0.1.0 - Ga in de grafische gebruikersinterface naar Instellingen > Apps > Optionele functies > Een functie toevoegen en zoek en installeer vervolgens OpenSSH Server.
- Controleer of het is geïnstalleerd met:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Na installatie bevinden de uitvoerbare bestanden zich meestal in de map c:\windows\system32\OpenSSH\/.Het belangrijkste configuratiebestand is sshd_config in / C:\ProgramData\ssh. Als die map er in eerste instantie niet is, moet u eerst de sshd-service starten; Windows maakt de map dynamisch aan.
C:\OpenSSH-Win, en volg vervolgens de installatie-instructies, inclusief het toevoegen van de map aan uw omgevingsvariabele Path.\install-sshd.ps1. Voer ook het volgende commando uit vanuit PowerShell in die map (gebruik powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1als scripts zijn geblokkeerd).Schakel na de installatie de service in:
Set-Service -Name sshd -StartupType 'Automatic' Start-Service sshd
SSH-service en firewall configureren
Het is nu cruciaal dat het automatisch start en poort 22 opent. Op moderne Windows-systemen kunt u het volgende doen:
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
Als die opdracht niet werkt, waarschijnlijk in oudere builds of in bepaalde bedrijfsconfiguraties, probeer dan dit:
netsh advfirewall firewall add rule name='SSH Port' dir=in action=allow protocol=TCP localport=22
Hiermee wordt poort 22 in de Windows Defender-firewall geopend, zodat uw SSH-server niet wordt geblokkeerd. Houd er rekening mee dat als u zich achter een strengere bedrijfsfirewall of router bevindt, u poort 22 daar ook moet openen.
sshd_config aanpassen voor SFTP
Open het configuratiebestand in een teksteditor, zoals Kladblok:
C:\ProgramData\ssh\sshd_config
Zoek de regel voor het SFTP-subsysteem. Deze zou er als volgt uit moeten zien:
Subsystem sftp sftp-server.exe
Als het is uitgeschakeld (uitgecommentarieerd) of ergens verkeerd naar verwijst, corrigeer het dan. Je kunt hier ook andere opties aanpassen:
- Stel AllowGroups in om te beperken wie verbinding kan maken (gebruik uw domein of lokale groepen).Voorbeeld:
AllowGroups domain\sftpusers - Wachtwoordverificatie inschakelen met:
AuthenticationMethods password - Configureer de chroot-directory van elke gebruiker (de locatie waar ze terechtkomen na verbinding) met ChrootDirectory en ForceCommand internal-sftp. Bijvoorbeeld:
Match User username ChrootDirectory C:\SFTP\username ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
In sommige configuraties is het raadzaam om de sshd-service na wijzigingen opnieuw te starten:
Restart-Service sshd
Verbinding maken met uw SFTP-server
Nu alles is ingesteld, is het tijd om verbinding te maken. Je kunt gratis clients gebruiken zoals WinSCP, of PowerShell met modules zoals Posh-SSH. Voor WinSCP stel je het protocol in op SFTP, voer je het IP-adres of de hostnaam van je server, je gebruikersnaam en je wachtwoord of SSH-sleutel in. Tijdens het verbinden krijg je mogelijk een waarschuwing dat de hostsleutel niet in de cache staat; accepteer deze als je de server vertrouwt (of verifieer de vingerafdruk handmatig).
Hier is een kort PowerShell-fragment om te testen of de Posh-SSH- module verbinding maakt:
Install-Module -Name Posh-SSH $cred = Get-Credential $session = New-SFTPSession -ComputerName 192.168.1.100 -Credential $cred Get-SFTPChildItem -SFTPSession $session -Path / #...do stuff...Remove-SFTPSession -SFTPSession $session
Als je liever de ingebouwde opdrachtregel gebruikt, open dan PowerShell en voer het volgende commando uit:
sftp username@server
Of geef een SSH-privésleutel op -i path\to\privatekeyals je kiest voor authenticatie op basis van sleutels. Het is vrij eenvoudig als je er eenmaal aan gewend bent.
Configuratie van authenticatie met openbare sleutels
Dit gedeelte is een beetje omslachtig, maar absoluut de moeite waard als je zonder wachtwoord wilt inloggen. Je maakt lokaal SSH-sleutels aan met ssh-keygen -t ed25519. Het genereert id_ed25519 (privé) en id_ed25519.pub (publiek).
Kopieer het bestand id_ed25519.pub naar de SFTP-server en plaats het in de map van de gebruiker C:\Users\username\.ssh\authorized_keys. Zorg ervoor dat de machtigingen correct zijn, want Windows is niet erg tolerant als het bestand niet alleen toegankelijk is voor de juiste gebruiker.
Configureer vervolgens uw SSH-client (zoals WinSCP of PowerShell) om die privésleutel te gebruiken. In WinSCP: ga naar Geavanceerd > SSH > Authenticatie en selecteer het bestand met de privésleutel. Met PowerShell kunt u het sleutelbestand specificeren zoals in het vorige voorbeeld.
En ja hoor, als alles goed is ingesteld, kun je verbinding maken zonder elke keer je wachtwoord in te voeren. Geen idee waarom het werkt, maar het werkt gewoon.
Samenvatting
Het hele proces kan wat onwennig lijken als je er nieuw mee bent, maar zodra alles geconfigureerd is, kan je Windows-computer een behoorlijk veilige en betrouwbare SFTP-server zijn. Let wel op de configuratiedetails: stel de juiste machtigingen in, open poorten en bewerk sshd_config op de juiste manier. Dat is cruciaal voor een succesvolle installatie. Probeer de verbinding eerst met WinSCP; als dat werkt, is PowerShell een fluitje van een cent. Het instellen van authenticatie met sleutels vergt iets meer moeite, maar het is de moeite waard vanwege het gemak en de extra beveiliging.
Samenvatting
- Installeer OpenSSH via PowerShell of de grafische gebruikersinterface (GUI), afhankelijk van uw Windows-versie.
- Schakel de sshd-service in en start deze, en stel de automatische start in.
- Configureer firewallregels om poort 22 toe te staan.
- Pas sshd_config aan uw beveiligings- en directoryvoorkeuren aan.
- Test met WinSCP- of PowerShell-modules.
- Stel desgewenst SSH-sleutels in voor inloggen zonder wachtwoord.
Samenvatting
Hopelijk geeft dit een goed idee van hoe je van Windows een volwaardige SFTP-server kunt maken. Het is niet perfect – Windows kan soms wat eigenzinnig zijn met betrekking tot machtigingen en configuratiepaden – maar deze aanpak is veel beter dan sommige van de oudere, omslachtigere opties. Als alles eenmaal goed is ingesteld, wordt het veilig overzetten van bestanden via SSH een stuk eenvoudiger en voelt het ook een stuk veiliger aan. Ik hoop dat dit iemand helpt om die eerste hindernis te overwinnen – het instellen van SSH op Windows is net vreemd genoeg om je een paar keer te laten struikelen.