Zum Inhalt

SSH-Schlüssel unter Linux erstellen & verwalten

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_configPasswordAuthentication no.

Hat euch dieser Beitrag gefallen?

Dann lasst gern ein Like da.

Kommentare

Noch keine Kommentare.
Neuen Kommentar schreiben

Deine E-Mail wird nicht veröffentlicht. Bei Antworten erhältst du eine Benachrichtigung.