Windows Server 2022 leveres med OpenSSH Server som en valgfri funktion: ingen tredjepartsinstallationsprogram, opdateringer via Windows Update. Når den er slået til, kan du køre PowerShell over SSH, kopiere filer med scp og pege scripts eller CI mod serveren som mod enhver Linux-maskine.
Alt nedenfor gjorde vi på vores Windows Server 2022-image i en PowerShell med administratorrettigheder via RDP (sådan forbinder du).
Først netværket. På en Windows-plan med NAT går den eneste indgående viderestilling til RDP, så SSH kan ikke nås fra internettet. Til SSH udefra skal du have en plan med egen IPv4, for eksempel Windows Small-IP. Når porten kan nås, tager trinene nedenfor omkring fem minutter.
1. Installer OpenSSH Server
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Klienten er allerede installeret; serveren viser NotPresent, indtil du tilføjer den. På vores server tog installationen 28 sekunder.
2. Start den, og lad den starte ved opstart
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Get-NetFirewallRule -Name *OpenSSH*
Når funktionen installeres, oprettes firewallreglen OpenSSH-Server-In-TCP (port 22, indgående, tilladt), så du behøver ikke tilføje en selv.
3. Gør PowerShell til standardshell
Som standard lander en SSH-session i cmd.exe. Skift til PowerShell:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Nye forbindelser får PowerShell 5.1 med det samme; ingen genstart er nødvendig.
4. Din nøgle til Administrator: filen, som alle falder over
Dette er den første Windows-fælde. For konti i gruppen Administrators læser sshd ikke C:\Users\<name>\.ssh\authorized_keys. Den læser én fælles fil, C:\ProgramData\ssh\administrators_authorized_keys, og kun hvis ingen andre end Administrators og SYSTEM kan skrive til den:
$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"
Også -Encoding ascii betyder noget. I vores test blev den samme nøgle, gemt med Out-File (UTF-16, standard i PowerShell 5.1), afvist med Permission denied (publickey). Fra din egen maskine:
ssh Administrator@YOUR.SERVER.IP
Du bør få en PowerShell-prompt uden adgangskode. For brugere uden administratorrettigheder virker den sædvanlige C:\Users\<name>\.ssh\authorized_keys.
5. Slå adgangskodelogin fra: den anden fælde
Den oplagte ændring, PasswordAuthentication no, er ikke nok i denne version. OpenSSH 8.1 tilbyder stadig keyboard-interactive, som spørger om den samme Windows-adgangskode. I vores test viste et login uden nøgle stadig keyboard-interactive, indtil vi også slog det fra. Desuden skal indstillingen stå før blokken Match Group administrators sidst i filen, ellers gælder den kun administratorer. Dette sætter begge linjer øverst:
$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
Hold din nuværende SSH-session åben og test fra en anden terminal. Et forsøg kun med adgangskode skal nu få:
Permission denied (publickey).
Det var resultatet i vores test for både Administrator og en almindelig bruger, mens nøglelogin blev ved med at virke.
Hvad du kan bruge det til
- Køre en kommando hvor som helst fra:
ssh Administrator@IP 'Get-Service sshd'. - Kopiere filer:
scp .\app.zip Administrator@IP:C:/apps/. - Begrænse porten til din adresse på samme måde som for RDP:
Set-NetFirewallRule -Name OpenSSH-Server-In-TCP -RemoteAddress 203.0.113.10.
Hvilken plan
SSH udefra kræver en offentlig IPv4: Windows Small-IP (4 vCPU, 4 GB, 50 GB) koster $28/md., Windows Medium-IP (6 vCPU, 6 GB) $36/md. Windows er Server 2022 med din egen licens (BYOL forklaret). Alle fire planer står på Windows VPS-siden. For at holde et program kørende, når du har afbrudt forbindelsen, se kør et script døgnet rundt på Windows Server.
Kommentarer
Ingen kommentarer endnu. Vær den første.