Installation
Öffnen Sie PowerShell mit Als Administrator ausführen. Prüfen Sie, ob es schon vorhanden ist:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Zeigt OpenSSH.Server~~~~0.0.1.0 den Wert State : NotPresent, installieren Sie es:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Microsofts Mindestvoraussetzung ist Windows 10 Build 1809 oder Windows Server 2019, mit PowerShell 5.1.
Es geht auch über die Einstellungen: Suchen Sie im Start nach „Optionale Features“, wählen Sie „Features anzeigen“ und fügen Sie OpenSSH Server hinzu. Öffnen Sie dann die App „Dienste“, stellen Sie OpenSSH SSH Server auf „Automatisch“ und starten Sie den Dienst.
Den Dienst starten
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Get-Service sshd
Ohne die zweite Zeile kommt der Dienst nach einem Neustart nicht zurück.
Die Firewall-Regel prüfen
Die Einrichtung sollte eine Regel für Port 22 anlegen und aktivieren. Dies ist die Prüfung von Microsoft, die die Regel auch anlegt, falls sie fehlt:
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
}
Testen Sie es von einer anderen Windows-Maschine:
Test-NetConnection -ComputerName server -Port 22
Verbinden
ssh user@server
Für ein Domänenkonto lautet die Form ssh domain\user@server. Standardmäßig erhalten Sie cmd.exe. Um stattdessen PowerShell zu bekommen, führen Sie dies auf dem Server aus:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Für die Anmeldung per Schlüssel brauchen Sie zuerst ein Schlüsselpaar auf Ihrem Computer. Siehe SSH-Schlüssel unter Windows erzeugen.
Schlüssel: Welche Datei gelesen wird
Hier scheitern die meisten Einrichtungen. Die Standard-sshd_config unter Windows endet mit:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Die Datei hängt also vom Konto ab:
| Konto | Datei |
|---|---|
| Standardbenutzer | C:\Users\user\.ssh\authorized_keys |
| Mitglied der Administratoren | C:\ProgramData\ssh\administrators_authorized_keys |
Ein Schlüssel im eigenen Ordner des Benutzers wird bei einem Administrator ignoriert, und die Anmeldung fällt auf die Passwortabfrage zurück. So prüfen Sie, ob das Konto ein Administrator ist:
Get-LocalGroupMember Administrators
Einen Schlüssel für einen Administrator hinzufügen
Führen Sie dies auf dem Server in einer PowerShell mit erhöhten Rechten aus, mit Ihrem eigenen öffentlichen Schlüssel anstelle des Beispiels:
Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value 'ssh-ed25519 AAAA... you@laptop'
icacls.exe "$env:ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
Die zweite Zeile ist wichtig: Die Datei darf Berechtigungseinträge nur für Administrators und SYSTEM haben. Auf einem nicht englischen Windows heißt die Gruppe anders, nehmen Sie also ihre SID: /grant "*S-1-5-32-544:F".
Einen Schlüssel für einen Standardbenutzer hinzufügen
Führen Sie dies auf dem Server als dieser Benutzer aus:
New-Item -Force -ItemType Directory -Path $env:USERPROFILE\.ssh
Add-Content -Force -Path $env:USERPROFILE\.ssh\authorized_keys -Value 'ssh-ed25519 AAAA... you@laptop'
Verwenden Sie für diese Dateien nicht > oder >>. In Windows PowerShell 5.1 schreiben sie UTF-16, was der Server nicht erwartet. Um einen Schlüssel von einem anderen Computer zu kopieren, siehe ssh-copy-id unter Windows.
Einstellungen ändern und Logs lesen
Die Konfigurationsdatei ist C:\ProgramData\ssh\sshd_config. Starten Sie den Dienst nach jeder Änderung neu:
Restart-Service sshd
Logs landen in der Ereignisanzeige unter Anwendungs- und Dienstprotokolle, OpenSSH, Operational. Sehen Sie zuerst dort nach, wenn eine Anmeldung scheitert, denn der Client sagt nur Permission denied.
Beachten Sie, dass PermitRootLogin unter Windows nichts bewirkt. Um Administratoren die Anmeldung zu verbieten, nutzen Sie DenyGroups administrators.
Fragen
Kann ich mich mit einem Microsoft-Entra-ID-Konto anmelden?
Nein. Laut Microsofts Dokumentation funktioniert die schlüsselbasierte Authentifizierung mit lokalen Konten und Active-Directory-Konten, Entra-Konten werden von OpenSSH unter Windows nicht unterstützt.
Ist das unter Windows Server 2025 genauso?
OpenSSH ist dort bereits installiert. Sie brauchen nur Start-Service sshd und Set-Service -Name sshd -StartupType Automatic, oder die Einstellung Remote SSH Access im Server-Manager.
Quellen
- Get started with OpenSSH Server for Windows, Microsoft Learn
- OpenSSH Server configuration for Windows, Microsoft Learn
- Key-based authentication in OpenSSH for Windows, Microsoft Learn
- Standard-sshd_config, Microsofts OpenSSH-Fork
- Logging facilities, Win32-OpenSSH-Wiki