SSH-Schlüssel-Authentifizierung unter Windows Server einrichten
Diese Anleitung beschreibt die Einrichtung der schlüsselbasierten Authentifizierung mit OpenSSH unter Windows Server. Im Gegensatz zur Passwort-Authentifizierung bieten SSH-Schlüssel deutlich mehr Sicherheit und sind weniger anfällig für Brute-Force-Angriffe.
Voraussetzungen
- Windows Server 2019 oder Windows Server 2022
- OpenSSH-Server und OpenSSH-Client installiert
- Administrator-Zugriff auf den Server
Installation von OpenSSH
Falls OpenSSH noch nicht installiert ist, kannst du es über PowerShell als Administrator installieren:
# OpenSSH-Server installieren
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# OpenSSH-Client installieren
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Schritt 1: SSH-Schlüsselpaar generieren
Öffne PowerShell als Administrator und generiere ein neues SSH-Schlüsselpaar:
ssh-keygen -t ed25519 -C "Administrator@windows-server"
# Alternativ für ältere Systeme:
ssh-keygen -t rsa -b 4096 -C "Administrator@windows-server"
Während der Generierung wirst du aufgefordert:
- Speicherort für den Schlüssel anzugeben (Standard:
C:\Users\%USERNAME%\.ssh\id_ed25519) - Eine Passphrase einzugeben (empfohlen für zusätzliche Sicherheit)
Schritt 2: Öffentlichen Schlüssel auf den Server kopieren
Es gibt mehrere Methoden, den öffentlichen Schlüssel auf den Zielserver zu übertragen:
Methode 1: Mit scp (Secure Copy)
scp $env:USERPROFILE\.ssh\id_ed25519.pub administrator@server-ip:C:/Users/Administrator/.ssh/authorized_keys
Methode 2: Mit sftp (SSH File Transfer)
sftp administrator@server-ip
mkdir .ssh
put $env:USERPROFILE/.ssh/id_ed25519.pub .ssh/authorized_keys
exit
Methode 3: Manuell kopieren
1. Zeige den öffentlichen Schlüssel an:
type $env:USERPROFILE\.ssh\id_ed25519.pub
2. Kopiere den Inhalt auf den Zielserver in die Datei:
C:\Users\Administrator\.ssh\authorized_keys
Schritt 3: SSH-Server konfigurieren
Passe die SSH-Server-Konfiguration an, um die schlüsselbasierte Authentifizierung zu erlauben:
# Konfigurationsdatei bearbeiten
notepad C:\ProgramData\ssh\sshd_config
Stelle sicher, dass folgende Zeilen vorhanden sind:
PubkeyAuthentication yes
AuthorizedKeysFile __PROGRAMDATA__/ssh/authorized_keys
PasswordAuthentication no # Optional: Passwort-Auth deaktivieren
Schritt 4: SSH-Dienst neu starten
Restart-Service sshd
Schritt 5: Verbindung testen
Teste die Verbindung vom Client-Computer aus:
ssh administrator@server-ip
Bei erfolgreicher Konfiguration wirst du nach der Passphrase des Schlüssels gefragt (falls festgelegt), aber nicht mehr nach dem Benutzerpasswort.
SSH-Agent für komfortables Arbeiten
Damit du die Passphrase nicht bei jeder Verbindung eingeben musst, kannst du den SSH-Agent verwenden:
SSH-Agent starten
# SSH-Agent im Hintergrund starten
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
Privaten Schlüssel zum Agent hinzufügen
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Gib deine Passphrase ein. Der Schlüssel ist jetzt im Speicher und du musst die Passphrase nicht mehr eingeben, bis du dich abmeldest.
Fehlerbehebung
Berechtigungen prüfen
Stelle sicher, dass die Berechtigungen korrekt sind:
# Auf dem Server ausführen
Get-Acl C:\Users\Administrator\.ssh\authorized_keys | Format-List
# Die Datei sollte nur für den aktuellen Benutzer zugänglich sein
# Falls nötig, korrigieren:
icacls "C:\Users\Administrator\.ssh\authorized_keys" /inheritance:r /grant:r "%username%:(R)"
Verbose-Modus für Fehlersuche
Bei Verbindungsproblemen nutze den Verbose-Modus:
ssh -v administrator@server-ip
Best Practices
- Schlüssel verwalten: Erstelle für verschiedene Zwecke unterschiedliche Schlüssel (z.B. einen für Server-Administration, einen für Git).
- Passphrase nutzen: Schütze private Schlüssel immer mit einer Passphrase.
- Regelmäßige Rotation: Ersetze Schlüssel alle 1-2 Jahre.
- Deaktiviere Passwort-Auth: Sobald die Schlüssel-Authentifizierung funktioniert, deaktiviere die Passwort-Anmeldung in der sshd_config.
- Backups erstellen: Bewahre private Schlüssel an einem sicheren Ort auf und erstelle Backups.
Fazit
Die schlüsselbasierte Authentifizierung mit OpenSSH unter Windows Server bietet eine sichere und bequeme Alternative zur Passwort-Authentifizierung. Mit den integrierten Tools wie ssh-keygen, ssh-agent und scp lässt sich das System effizient verwalten.
Vorteile der Schlüssel-Authentifizierung:
- Keine Übertragung von Passwörtern über das Netzwerk
- Immun gegen Brute-Force-Angriffe auf Passwörter
- Möglichkeit zur Automatisierung (Script-gesteuerte Anmeldungen)
- Zentrale Verwaltung über authorized_keys