SSH-Login mit Public-Key-Authentifizierung einrichten
Passwortbasierter SSH-Login ist unsicher und umständlich. Public-Key-Authentifizierung ist sicherer, schneller und lässt sich in Skripten verwenden. Diese Anleitung zeigt den vollständigen Einrichtungsprozess für Debian/Ubuntu und macOS – inklusive Schlüsselsicherung.
Wie Public-Key-Authentifizierung funktioniert
Bei der Public-Key-Authentifizierung gibt es zwei Schlüssel: einen privaten (der niemals den eigenen Rechner verlässt) und einen öffentlichen (der auf dem Server hinterlegt wird). Beim Login beweist der Client dem Server, dass er den privaten Schlüssel besitzt – ohne ihn jemals zu übertragen. Der Server kann das mit dem hinterlegten Public Key verifizieren.
Schlüsselpaar generieren
Auf dem lokalen Rechner (Debian/Ubuntu oder macOS):
ssh-keygen -t ed25519 -C "kommentar@hostname"
Ed25519 ist der moderne Standard – sicherer und schneller als RSA. Für Systeme, die Ed25519 nicht unterstützen (sehr alte SSH-Versionen), alternativ RSA mit 4096 Bit:
ssh-keygen -t rsa -b 4096 -C "kommentar@hostname"
Der Befehl fragt nach dem Speicherort (Standard: ~/.ssh/id_ed25519 bzw. ~/.ssh/id_rsa) und einer optionalen Passphrase. Eine Passphrase schützt den privaten Schlüssel, falls er gestohlen wird – dringend empfohlen.
Public Key auf den Server übertragen – Debian/Ubuntu
Der einfachste Weg ist ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@servername
Das Kommando verbindet sich per Passwort, legt auf dem Server die Datei ~/.ssh/authorized_keys an (falls nicht vorhanden) und trägt den Public Key ein. Anschließend ist der passwortlose Login möglich:
ssh username@servername
Public Key auf den Server übertragen – macOS
Auf macOS ist ssh-copy-id nicht immer standardmäßig vorhanden (ältere macOS-Versionen). Alternativ:
# Schlüssel zum ssh-agent hinzufügen
ssh-add ~/.ssh/id_rsa
# Public Key manuell auf Server kopieren
cat ~/.ssh/id_rsa.pub | ssh servername -l username 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
Der mkdir -p ~/.ssh stellt sicher, dass das Verzeichnis existiert. Das >> hängt den Schlüssel an – falls bereits andere Schlüssel in authorized_keys stehen, werden sie nicht überschrieben.
Berechtigungen auf dem Server prüfen
SSH ist bei Berechtigungen pingelig. Falsche Rechte führen dazu, dass der Key-Login schweigend fehlschlägt:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Das Home-Verzeichnis darf nicht group- oder world-writable sein (chmod 755 ~ oder restriktiver).
ssh-agent auf macOS dauerhaft konfigurieren
Auf macOS kann der ssh-agent so konfiguriert werden, dass er den Schlüssel beim Login automatisch lädt:
# ~/.ssh/config
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
Mit UseKeychain yes wird die Passphrase im macOS-Schlüsselbund gespeichert – einmalig eingeben, danach automatisch entsperrt.
Private Key sichern mit rsync
SSH-Schlüssel sind wertvolle Credentials – ein Backup ist unverzichtbar. Mit rsync auf ein externes Laufwerk oder einen Backup-Server sichern:
# Public Key sichern
rsync -avz --delete --sparse ~/.ssh/id_rsa.pub /target/ssh-backup/
# Gesamtes .ssh-Verzeichnis sichern (inkl. privater Schlüssel!)
rsync -avz --delete --sparse ~/.ssh/ /Volumes/Backup/ssh-keys/
Das Backup des privaten Schlüssels muss verschlüsselt oder an einem physisch sicheren Ort gespeichert werden. Wer den privaten Schlüssel mit einer Passphrase geschützt hat, ist bei Verlust des Backups besser abgesichert.
Passwort-Login auf dem Server deaktivieren
Sobald der Key-Login funktioniert, sollte der Passwort-Login deaktiviert werden – das erhöht die Sicherheit erheblich:
# In /etc/ssh/sshd_config auf dem Server:
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# SSH-Dienst neu laden
sudo systemctl reload ssh
Wichtig: Vor dem Deaktivieren des Passwort-Logins sicherstellen, dass der Key-Login funktioniert – sonst ist man vom Server ausgesperrt.
Fazit
Public-Key-Authentifizierung ist Standard für jeden ernsthaften Serveradmin. Die Einrichtung dauert wenige Minuten, erhöht die Sicherheit massiv und macht den täglichen Umgang mit Servern komfortabler – kein Passwort eintippen, keine Brute-Force-Angriffe mehr. Mit einem regelmäßigen rsync-Backup des .ssh-Verzeichnisses sind die Schlüssel auch bei Systemwechsel sofort wieder verfügbar.


