EMZETT.
Login

ssh-agent: Schlüssel einmal entsperren

Kurz: Ein Hintergrundprogramm, das entschlüsselte SSH-Schlüssel im Speicher hält, damit man die Passphrase nicht bei jeder Verbindung neu eingeben muss.

Genauer: Ein privater SSH-Schlüssel sollte mit einer Passphrase geschützt sein. Wer täglich viele Verbindungen aufbaut, müsste sie ständig tippen. Der ssh-agent entschlüsselt den Schlüssel einmal und stellt ihn anschließend Programmen zur Verfügung, die ihn für Anmeldungen benötigen. Der private Schlüssel verlässt den Agenten nie, es werden nur Signaturen angefragt.

Im Detail

Benutzung

eval "$(ssh-agent -s)"          # Agent starten (falls nicht automatisch)
ssh-add ~/.ssh/id_ed25519       # Schlüssel laden, Passphrase einmal eingeben
ssh-add -l                      # geladene Schlüssel anzeigen
ssh-add -t 4h ~/.ssh/id_ed25519 # Schlüssel nur 4 Stunden halten
ssh-add -D                      # alle entfernen

Viele Desktop-Umgebungen starten einen Agenten beim Anmelden (GNOME Keyring, KDE Wallet, macOS-Schlüsselbund, Windows OpenSSH Agent) und laden Schlüssel automatisch.

Agent-Weiterleitung

Mit ssh -A server (oder ForwardAgent yes) wird der Agent auf einen Zwischenrechner weitergereicht. Von dort kann man mit den eigenen Schlüsseln einen dritten Server erreichen, ohne den Schlüssel dort abzulegen. Risiko: Wer auf dem Zwischenrechner root ist, kann den weitergeleiteten Agenten für eigene Anmeldungen nutzen, solange du verbunden bist. Besser ist ProxyJump (ssh -J), das ohne Agent-Weiterleitung auskommt.

Sicherheit

Ein laufender Agent ist bequem, aber ein Angriffspunkt: Schadsoftware, die als dein Benutzer läuft, kann Signaturen anfordern. Setze Zeitlimits (-t), bestätige Nutzung bei Bedarf (ssh-add -c) und entlade Schlüssel, wenn du sie nicht brauchst. Hardware-Schlüssel (FIDO2, ed25519-sk) verlangen für jede Anmeldung eine Berührung und sind noch sicherer.

Zusammenspiel

Schlüsselpaar erzeugen: ssh-keygen -t ed25519. Den öffentlichen Teil (.pub) trägst du in ~/.ssh/authorized_keys des Servers ein (ssh-copy-id). Der Agent hält den privaten Teil. Mit einer Datei ~/.ssh/config lassen sich Hosts, Benutzer und Schlüssel dauerhaft hinterlegen.

Siehe auch: SSH unter Linux, SSH, SSH-Tunnel