Mit einem SSH-Key meldest du dich an einem Server mit einem kryptografischen Schlüsselpaar statt mit einem Passwort an. Passwörter sind anfällig für Brute-Force-Angriffe, mühsam jedes Mal einzugeben und schwer in Skripten zu automatisieren. Die schlüsselbasierte Authentifizierung ist sicherer und zugleich weitaus bequemer: Du richtest sie einmal ein und meldest dich danach bei jeder Verbindung mit einem einzigen Befehl an. In dieser Anleitung lernst du Schritt für Schritt, wie du einen Schlüssel von Grund auf erzeugst, ihn auf deinem Server installierst und die Einstellungen hinzufügst, die den täglichen Gebrauch mühelos machen.
Wie funktioniert ein SSH-Key?
Ein SSH-Key besteht aus zwei Dateien: einem privaten Schlüssel (Private Key) und einem öffentlichen Schlüssel (Public Key). Der private Schlüssel bleibt nur auf deinem Computer und wird niemals weitergegeben; den öffentlichen Schlüssel kopierst du auf jeden Server, auf dem du dich anmelden möchtest. Beim Verbinden führt der Server eine Prüfung gegen den öffentlichen Schlüssel durch und lässt nur einen Client herein, der nachweisen kann, dass er den passenden privaten Schlüssel besitzt. Dank dieses asymmetrischen Verfahrens wandert der private Schlüssel niemals über das Netzwerk.
- Privater Schlüssel:
~/.ssh/id_ed25519— halte ihn geheim, gib ihn an niemanden weiter. - Öffentlicher Schlüssel:
~/.ssh/id_ed25519.pub— kopiere ihn frei auf Server.
Das Schlüsselpaar erzeugen
Auf modernen Systemen ist der bevorzugte Algorithmus Ed25519: kurz, schnell und stark. Führe diesen Befehl in deinem Terminal aus:
ssh-keygen -t ed25519 -C "name@beispiel.com"
Die Option -C fügt dem Schlüssel einen Kommentar (meist eine E-Mail-Adresse) hinzu, was hilft, mehrere Schlüssel auseinanderzuhalten. Der Befehl fragt nach einem Speicherpfad und einer Passphrase. Drücke Enter, um den Standardpfad (~/.ssh/id_ed25519) zu übernehmen. Die Passphrase verschlüsselt deinen privaten Schlüssel mit einem zusätzlichen Passwort; sie schützt den Schlüssel, falls dein Computer gestohlen wird, deshalb ist es nicht empfehlenswert, sie leer zu lassen.
Falls dein System Ed25519 nicht unterstützt (sehr alte Server), ist ein RSA-Schlüssel mit 4096 Bit eine sichere Alternative:
ssh-keygen -t rsa -b 4096 -C "name@beispiel.com"
Den öffentlichen Schlüssel auf dem Server installieren
Die praktischste Methode ist das Werkzeug ssh-copy-id. Es fügt deinen öffentlichen Schlüssel mit den richtigen Berechtigungen zur Datei ~/.ssh/authorized_keys auf dem Server hinzu:
ssh-copy-id benutzer@server-ip
Dieser Befehl fragt ein letztes Mal nach deinem Passwort; nach Erfolg meldest du dich fortan mit dem Schlüssel an. Wenn ssh-copy-id nicht verfügbar ist (zum Beispiel unter Windows oder bei einem eingeschränkten Host), kannst du den Schlüssel manuell hinzufügen:
cat ~/.ssh/id_ed25519.pub | ssh benutzer@server-ip \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && \
cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Die Berechtigungen sind entscheidend: Der Ordner ~/.ssh muss 700 und die Datei authorized_keys 600 sein. Falsche Berechtigungen führen dazu, dass SSH den Schlüssel aus Sicherheitsgründen ablehnt und stillschweigend wieder nach einem Passwort fragt.
Die Verbindung mit ~/.ssh/config verkürzen
Statt jedes Mal einen langen Befehl einzutippen, erstellst du auf deinem Client eine Datei ~/.ssh/config und definierst einen Alias für die Verbindung:
Host meinserver
HostName 46.202.156.61
User benutzer
Port 22
IdentityFile ~/.ssh/id_ed25519
Nach dieser Definition genügt ssh meinserver; SSH verwendet automatisch die richtige Adresse, den Benutzer, den Port und den Schlüssel. Das ist besonders praktisch bei Hosting-Anbietern, die einen nicht standardmäßigen Port verwenden (zum Beispiel Port 65002).
Die Passphrase einmalig mit ssh-agent eingeben
Wenn du eine Passphrase gesetzt hast, möchtest du sie nicht bei jeder Verbindung eingeben. ssh-agent hält deinen Schlüssel während der Sitzung im Speicher:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Unter macOS kannst du den Schlüssel im Schlüsselbund ablegen, um ihn dauerhaft zu machen: ssh-add --apple-use-keychain ~/.ssh/id_ed25519. Unter Linux starten die meisten Desktop-Umgebungen den Agenten automatisch beim Anmelden, sodass ein einmaliges ssh-add genügt.
Passwort-Login deaktivieren und die Sicherheit härten
Sobald du überprüft hast, dass die Anmeldung mit dem Schlüssel funktioniert, verbessert das vollständige Deaktivieren des Passwort-Logins auf dem Server die Sicherheit erheblich. Bearbeite /etc/ssh/sshd_config auf dem Server:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
Um die Änderung anzuwenden, starte den SSH-Dienst neu: sudo systemctl restart ssh (auf einigen Distributionen sshd). Wichtig: Stelle vor dem Anwenden dieser Einstellung immer in einem separaten Terminal sicher, dass du dich mit dem Schlüssel anmelden kannst; sonst sperrst du dich womöglich selbst vom Server aus.
Denselben Schlüssel bei Diensten wie GitHub verwenden
Du kannst denselben SSH-Key auch bei Git-Hosting-Diensten verwenden. Kopiere den Inhalt deines öffentlichen Schlüssels und füge ihn im Bereich SSH-Schlüssel deiner GitHub-/GitLab-Einstellungen ein:
cat ~/.ssh/id_ed25519.pub
Teste anschließend die Verbindung mit ssh -T git@github.com. So funktionieren git push und git pull sicher mit dem Schlüssel, ohne nach einem Passwort zu fragen.
Häufige Fragen
Was passiert, wenn ich meinen privaten Schlüssel verliere?
Ohne Sicherung des privaten Schlüssels musst du dir den Zugang zu jedem Server, auf dem er sich anmeldet, durch Erzeugen und Installieren eines neuen Schlüssels zurückholen. Sichere deinen privaten Schlüssel daher an einem sicheren Ort und füge ihn niemals in ein öffentliches Repository oder einen Chat-Kanal ein.
Kann ich mich von mehreren Computern aus am selben Server anmelden?
Ja. Am besten erzeugst du auf jedem Computer einen eigenen Schlüssel und fügst den öffentlichen Schlüssel jedes Geräts zur Datei authorized_keys auf dem Server hinzu. So löschst du beim Verlust eines Geräts nur dessen Schlüssel, und die anderen bleiben unberührt.
Ist es sicher, die Passphrase leer zu lassen?
Automatisierte Skripte und CI/CD-Umgebungen benötigen mitunter einen Schlüssel ohne Passphrase, aber auf deinem persönlichen Rechner solltest du immer eine verwenden. Eine Passphrase macht den privaten Schlüssel für sich allein unbrauchbar, selbst wenn die Datei in falsche Hände gerät.
Möchtest du deinen Server sicher und reibungslos einrichten? Wenn du Hilfe bei SSH-Hardening, Deployment-Automatisierung oder Serververwaltung brauchst, nimm Kontakt mit mir auf.