Übersicht
Dieser Artikel beschreibt die Client-seitige Konfiguration der SSH-Authentifizierung mit öffentlichen Schlüsseln, um sich sicher mit einem Server zu verbinden. Die Schritte gelten sowohl für Windows- als auch für Linux-Systeme.
Voraussetzungen
- SSH-Client ist bereits installiert (standardmäßig ab Windows 10 und auf Linux)
- Der Zielserver erlaubt die Authentifizierung mit öffentlichen Schlüsseln
- Ein Benutzerkonto auf dem Server ist vorhanden
Schlüsseltypen und Verschlüsselungsverfahren
Die gängigen SSH-Schlüsseltypen sind RSA, ECDSA und Ed25519. Die folgende Tabelle zeigt die wichtigsten Merkmale, Einsatzempfehlungen und Kompatibilität:
| Schüsseltyp | Merkmale | Empfohlener Einsatz | Kompatibilität |
|---|---|---|---|
| RSA | Bewährter Standard, flexible Schlüssellänge, hohe Kompatibilität | Bestehende Systeme, Legacy-Umgebungen | Sehr hoch |
| ECDSA | Elliptische Kurven, kürzere Schlüssel, höhere Geschwindigkeit | Leistungsorientierte Systeme | Mittel |
| Ed25519 | Moderne, schnelle und sichere Methode mit kompaktem Schlüssel | Neue Systeme, hohe Sicherheitsanforderungen | Neuere SSH-Clients/Server |
Ed25519 gilt als aktueller Standard (unterstützt ab OpenSSH 6.5, 2014). RSA bleibt weit verbreitet, insbesondere in FIPS-konformen oder älteren Umgebungen. ECDSA liegt dazwischen.
Variablennotation
Die folgenden Platzhalter werden im Artikel verwendet. Bitte durch tatsächliche Werte ersetzen.
| Variable | Beispiel | Beschreibung |
|---|---|---|
<<USERNAME>> |
exampleuser |
Benutzername des lokalen Clients |
<<SERVER>> |
192.168.1.10 |
Hostname oder IP-Adresse des Servers |
<<USER>> |
ubuntu oder ec2-user |
Benutzerkonto für SSH-Verbindung auf dem Server |
<<EMAIL_ADDRESS>> |
user@example.com |
Kommentar im Schlüssel (optional) |
Hinweis für Windows-Benutzer
Alle Befehle sind für PowerShell gedacht.
Falls sie in der Eingabeaufforderung (cmd.exe) verwendet werden, muss$env:USERPROFILEdurch%USERPROFILE%ersetzt werden.
Windows-Client
Schritt 1: Schlüssel generieren
Öffnen Sie PowerShell als Administrator und führen Sie Folgendes aus:
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Das
-C-Argument ist optional und dient nur der Kennzeichnung.
Beispielausgabe:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/C:/Users/<<USERNAME>>/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
- Öffentlicher Schlüssel:
$env:USERPROFILE\.ssh\id_ed25519.pub - Privater Schlüssel:
$env:USERPROFILE\.ssh\id_ed25519
Schritt 2: Öffentlichen Schlüssel auf Server kopieren
cat $env:USERPROFILE\.ssh\id_ed25519.pub | ssh <<USER>>@<<SERVER>> "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"
Alternativ: Inhalt der .pub-Datei manuell auf den Server in ~/.ssh/authorized_keys kopieren.
Schritt 3: Verbindung testen
ssh -i $env:USERPROFILE\.ssh\id_ed25519 <<USER>>@<<SERVER>>
Beim ersten Verbindungsaufbau muss der Host-Fingerprint bestätigt werden.
Linux-Client
Schritt 1: Schlüssel generieren
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Das
-C-Argument ist optional.
Passphrasenlos für Automatisierung.
Beispielausgabe:
Enter file in which to save the key (/home/<<USERNAME>>/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
- Öffentlicher Schlüssel:
~/.ssh/id_ed25519.pub - Privater Schlüssel:
~/.ssh/id_ed25519
Schritt 2: Schlüssel auf Server übertragen
ssh-copy-id -i ~/.ssh/id_ed25519.pub <<USER>>@<<SERVER>>
Oder manuell per Texteditor in ~/.ssh/authorized_keys einfügen.
Schritt 3: Verbindung testen
ssh -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Verwendung von passwortgeschützten SSH-Schlüsseln
Wenn der private Schlüssel mit einer Passphrase gesichert ist, kann ein SSH-Agent verwendet werden, um sie im Speicher zu behalten.
Schritt 1: SSH-Agent starten
Windows:
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent
Linux:
eval "$(ssh-agent -s)"
Automatischer Start
Windows:
Set-Service -Name ssh-agent -StartupType Automatic
Linux:
In ~/.bashrc oder ~/.profile hinzufügen:
eval "$(ssh-agent -s)" > /dev/null
Schritt 2: Schlüssel registrieren
Windows:
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Linux:
ssh-add ~/.ssh/id_ed25519
Schritt 3: Überprüfung
ssh-add -l
Erscheint der Fingerabdruck, ist die Registrierung erfolgreich.
SSH-Client-Konfigurationsdatei (config)
Zur Vereinfachung wiederholter Verbindungen kann eine Konfigurationsdatei erstellt werden.
Pfad:
- Windows:
C:\Users\<<USERNAME>>\.ssh\config - Linux:
~/.ssh/config
Beispiel:
Host myserver
HostName <<SERVER>>
User <<USER>>
IdentityFile ~/.ssh/id_ed25519
Port 22
Verwendung:
ssh myserver
Mehrere Server verwalten
Host web
HostName 192.168.1.10
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Host db
HostName 192.168.1.11
User ec2-user
IdentityFile ~/.ssh/id_ed25519
Hinweis: Für höhere Sicherheit sollten für unterschiedliche Server eigene Schlüssel verwendet werden.
Verbindung prüfen
Detailliertes Debugging:
ssh -vvv -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Erfolgreiche Authentifizierung zeigt:
debug1: Authentication succeeded (publickey)
Fehlerbehebung
Häufige Ursachen für fehlgeschlagene Verbindungen:
-
Server erlaubt keine Schlüssel-Authentifizierung
→PubkeyAuthenticationim Server deaktiviert oder alte SSH-Version. -
Falsche Schlüsselregistrierung
→ Öffentlicher Schlüssel nicht korrekt inauthorized_keyseingetragen. -
Benutzer- oder Hostfehler
→ Falscher Benutzername oder Hostname, Berechtigungsproblem.
Fazit
SSH mit öffentlicher Schlüsselauthentifizierung ermöglicht sichere Verbindungen ohne Passwörter.
Unter Windows und Linux kann die Einrichtung einfach mit ssh-keygen erfolgen.
Wichtig sind korrekte Dateiberechtigungen, Schlüsselverwaltung und ggf. der Einsatz des SSH-Agents.
