SSH-Schlüssel unter Linux erstellen & verwalten
SSH-Schlüssel unter Linux erstellen & verwalten
Zusammenfassung:
Dieser Artikel dokumentiert die Erstellung und Verwaltung von SSH-Schlüsselpaaren unter Linux. Themen sind die Schlüsselerstellung mit ssh-keygen (inkl. Algorithmus-Empfehlungen), die sichere Übertragung auf Server via ssh-copy-id, die Einrichtung des ssh-agent für passwortloses Arbeiten sowie die Verwaltung mehrerer Schlüssel für verschiedene Server via ~/.ssh/config.
1. SSH-Schlüsselpaar erstellen
Empfohlener Algorithmus: Ed25519
ssh-keygen -t ed25519 -C "kommentar@beispiel.de"
-t ed25519– moderner, sicherer Algorithmus (empfohlen gegenüber RSA)-C– optionaler Kommentar (z. B. E-Mail-Adresse zur Identifikation)
Alternativ: RSA mit 4096 Bit (Kompatibilität mit älteren Systemen)
ssh-keygen -t rsa -b 4096 -C "kommentar@beispiel.de"
Speicherort und Passphrase
ssh-keygen fragt nach dem Speicherort (Standard: ~/.ssh/id_ed25519) und einer optionalen Passphrase. Eine Passphrase verschlüsselt den privaten Schlüssel zusätzlich – empfohlen für produktive Umgebungen.
2. Öffentlichen Schlüssel auf Server übertragen
ssh-copy-id -i ~/.ssh/id_ed25519.pub benutzer@server.example.com
Der Befehl hängt den öffentlichen Schlüssel automatisch an ~/.ssh/authorized_keys auf dem Server an.
Manuell (falls ssh-copy-id nicht verfügbar)
cat ~/.ssh/id_ed25519.pub | ssh benutzer@server.example.com "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
3. SSH-Agent einrichten
Der SSH-Agent speichert entschlüsselte Schlüssel im Arbeitsspeicher, sodass die Passphrase nur einmal pro Session eingegeben werden muss.
Agent starten und Schlüssel hinzufügen
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Automatisch beim Login (via ~/.bashrc oder ~/.zshrc)
if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
fi
4. Mehrere Schlüssel mit ~/.ssh/config verwalten
Die ~/.ssh/config-Datei ermöglicht es, verschiedene Schlüssel und Verbindungsoptionen pro Host zu definieren.
nano ~/.ssh/config
Beispielkonfiguration:
# GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
# Privater Server
Host meinserver
HostName 192.168.1.100
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519_server
# Alle anderen Verbindungen
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
Verbindung via Alias:
ssh meinserver
5. Referenz: Wichtige Pfade und Dateien
| Datei | Beschreibung |
|---|---|
~/.ssh/id_ed25519
|
Privater Schlüssel (geheim halten!) |
~/.ssh/id_ed25519.pub
|
Öffentlicher Schlüssel (auf Server übertragen) |
~/.ssh/authorized_keys
|
Erlaubte öffentliche Schlüssel (auf dem Server) |
~/.ssh/config
|
Verbindungskonfiguration / Alias-Definitionen |
~/.ssh/known_hosts
|
Bekannte Server-Fingerabdrücke |
6. Sicherheitshinweise
- Den privaten Schlüssel (
id_ed25519) niemals teilen oder auf einen Server hochladen. - Berechtigungen prüfen – SSH ist bei falschen Rechten streng:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub chmod 600 ~/.ssh/authorized_keys - Passwort-Login auf dem Server nach SSH-Key-Einrichtung deaktivieren: In
/etc/ssh/sshd_config→PasswordAuthentication no.
Hat euch dieser Beitrag gefallen?
Dann lasst gern ein Like da.