SSH-Client-Konfiguration für die öffentliche Schlüsselauthentifizierung (Windows/Linux)

Ü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:USERPROFILE durch %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:

  1. Server erlaubt keine Schlüssel-Authentifizierung
    PubkeyAuthentication im Server deaktiviert oder alte SSH-Version.

  2. Falsche Schlüsselregistrierung
    → Öffentlicher Schlüssel nicht korrekt in authorized_keys eingetragen.

  3. 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.