−25%

op Windows bij jaarbetaling, tot 31/10. Naar de pakketten

EQVPS
Aan de slag

OpenSSH Server installeren op Windows Server 2022 (sleutellogin, PowerShell als shell)

Installeer de ingebouwde OpenSSH Server op een Windows Server 2022 VPS, maak PowerShell de standaardshell, log met een sleutel in als Administrator en zet wachtwoordlogin uit. Met de twee Windows-valkuilen waardoor sleutellogin mislukt.

Windows Server 2022 levert OpenSSH Server mee als optionele functie: geen installatieprogramma van derden, updates via Windows Update. Staat het aan, dan voer je PowerShell uit via SSH, kopieer je bestanden met scp en richt je scripts of CI op de server zoals op elke Linux-machine.

Alles hieronder deden we op ons Windows Server 2022-image, in een PowerShell met beheerdersrechten via RDP (zo maak je verbinding).

Eerst het netwerk. Op een Windows-pakket met NAT gaat de enige inkomende doorsturing naar RDP, dus SSH is niet bereikbaar vanaf internet. Voor SSH van buitenaf heb je een pakket met eigen IPv4 nodig, zoals Windows Small-IP. Is de poort bereikbaar, dan kosten de stappen hieronder zo'n vijf minuten.

1. Installeer OpenSSH Server

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

De client is al geïnstalleerd; de server staat op NotPresent tot je hem toevoegt. Op onze server duurde de installatie 28 seconden.

2. Start hem en laat hem meestarten met het systeem

Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Get-NetFirewallRule -Name *OpenSSH*

Bij het installeren van de functie wordt de firewallregel OpenSSH-Server-In-TCP aangemaakt (poort 22, inkomend, toegestaan), dus je hoeft er zelf geen toe te voegen.

3. Maak PowerShell de standaardshell

Standaard komt een SSH-sessie uit in cmd.exe. Schakel over naar PowerShell:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Nieuwe verbindingen krijgen meteen PowerShell 5.1; herstarten is niet nodig.

4. Je sleutel voor Administrator: het bestand waar iedereen over struikelt

Dit is de eerste Windows-valkuil. Voor accounts in de groep Administrators leest sshd C:\Users\<name>\.ssh\authorized_keys niet. Het leest één gedeeld bestand, C:\ProgramData\ssh\administrators_authorized_keys, en alleen als niemand behalve Administrators en SYSTEM erin kan schrijven:

$pub = 'ssh-ed25519 AAAA...your-public-key... you@laptop'
Set-Content -Path C:\ProgramData\ssh\administrators_authorized_keys -Value $pub -Encoding ascii
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

Ook -Encoding ascii telt. In onze test werd dezelfde sleutel, opgeslagen met Out-File (UTF-16, de standaard van PowerShell 5.1), geweigerd met Permission denied (publickey). Vanaf je eigen computer:

ssh Administrator@YOUR.SERVER.IP

Je hoort een PowerShell-prompt te krijgen zonder wachtwoord. Voor gebruikers zonder beheerdersrechten werkt het gebruikelijke C:\Users\<name>\.ssh\authorized_keys.

5. Zet wachtwoordlogin uit: de tweede valkuil

De voor de hand liggende wijziging, PasswordAuthentication no, is in deze versie niet genoeg. OpenSSH 8.1 biedt nog steeds keyboard-interactive aan, dat om hetzelfde Windows-wachtwoord vraagt. In onze test bleef een login zonder sleutel keyboard-interactive tonen tot we ook dat uitzetten. En de instelling moet vóór het blok Match Group administrators aan het eind van het bestand staan, anders geldt ze alleen voor beheerders. Dit zet beide regels bovenaan:

$cfg = 'C:\ProgramData\ssh\sshd_config'
$lines = Get-Content $cfg | Where-Object { $_ -notmatch '^#?\s*(PasswordAuthentication|KbdInteractiveAuthentication|ChallengeResponseAuthentication)\s' }
Set-Content $cfg -Value (@('PasswordAuthentication no', 'ChallengeResponseAuthentication no') + $lines) -Encoding ascii
Restart-Service sshd

Houd je huidige SSH-sessie open en test vanuit een tweede terminal. Een poging met alleen een wachtwoord hoort nu dit te krijgen:

Permission denied (publickey).

Dat was het resultaat in onze test voor zowel Administrator als een gewone gebruiker, terwijl inloggen met de sleutel bleef werken.

Wat je ermee kunt

  • Een commando uitvoeren vanaf elke plek: ssh Administrator@IP 'Get-Service sshd'.
  • Bestanden kopiëren: scp .\app.zip Administrator@IP:C:/apps/.
  • De poort beperken tot jouw adres, net als bij RDP: Set-NetFirewallRule -Name OpenSSH-Server-In-TCP -RemoteAddress 203.0.113.10.

Welk pakket

SSH van buitenaf vraagt een publiek IPv4-adres: Windows Small-IP (4 vCPU, 4 GB, 50 GB) kost $28/maand, Windows Medium-IP (6 vCPU, 6 GB) $36/maand. Windows is Server 2022 met je eigen licentie (BYOL uitgelegd). Alle vier pakketten staan op de Windows VPS-pagina. Om een programma na het verbreken van de verbinding te laten doorlopen, zie een script 24/7 draaien op Windows Server.

FAQ

Waarom SSH op Windows als er RDP is?

Scripts en tools spreken SSH. Met OpenSSH op de server voer je PowerShell-commando's uit vanaf een Linux-machine of een CI-job, kopieer je bestanden met scp en laat je automatisering de server beheren zonder bureaubladsessie.

Mijn sleutel werkt voor een gewone gebruiker, maar niet voor Administrator. Waarom?

Voor leden van de groep Administrators negeert Windows-OpenSSH ~/.ssh/authorized_keys en leest het C:\ProgramData\ssh\administrators_authorized_keys. Dat bestand mag alleen door Administrators en SYSTEM beschrijfbaar zijn, anders slaat sshd het stilletjes over.

Kan ik SSH bereiken op een Windows NAT-pakket?

Van buitenaf niet. Op een Windows NAT-pakket wordt de persoonlijke externe poort doorgestuurd naar RDP (3389), en dat is de enige inkomende doorsturing. Voor SSH vanaf internet kies je een Windows-pakket met eigen IPv4. Binnen de server werkt OpenSSH nog steeds voor lokale tools.

Welke OpenSSH-versie installeert Windows Server 2022?

OpenSSH 8.1p1 for Windows. Daarom gebruiken de wachtwoordinstellingen ChallengeResponseAuthentication in plaats van de nieuwere naam KbdInteractiveAuthentication.

Reacties

Nog geen reacties. Wees de eerste.

Laat een reactie achter

Reacties worden gemodereerd voordat ze verschijnen.