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