SSH-Keys sind die sicherste Methode zur Server-Authentifizierung. Kein Passwort kann erraten werden, und die Anmeldung ist sogar bequemer. In dieser Anleitung richten wir SSH-Key-Authentifizierung ein.

Warum SSH-Keys?

| Aspekt | Passwort | SSH-Key | |--------|----------|---------| | Sicherheit | Kann erraten werden | Praktisch unknackbar | | Brute-Force | Anfällig | Immun | | Bequemlichkeit | Jedes Mal eingeben | Einmal einrichten | | Automatisierung | Schwierig | Ideal für Skripte |

Funktionsweise

SSH-Keys arbeiten mit asymmetrischer Verschlüsselung:

1. Private Key: Bleibt auf Ihrem Computer (niemals teilen!) 2. Public Key: Wird auf dem Server hinterlegt

Der Server kann mit dem Public Key prüfen, ob Sie den passenden Private Key besitzen - ohne dass der Private Key übertragen wird.

SSH-Key erstellen

Auf Ihrem lokalen Computer

ssh-keygen -t ed25519 -C "ihr@email.de"

Oder mit RSA (ältere Kompatibilität):

ssh-keygen -t rsa -b 4096 -C "ihr@email.de"

Sie werden gefragt: 1. Speicherort: Enter für Standard (~/.ssh/id_ed25519) 2. Passphrase: Optionales Passwort für zusätzliche Sicherheit

Ergebnis

Zwei Dateien werden erstellt:

  • ~/.ssh/id_ed25519 - Private Key (GEHEIM!)
  • ~/.ssh/id_ed25519.pub - Public Key (kann geteilt werden)

Public Key auf Server kopieren

Methode 1: ssh-copy-id (empfohlen)

ssh-copy-id user@server

Sie werden ein letztes Mal nach dem Passwort gefragt.

Methode 2: Manuell

Public Key anzeigen:

cat ~/.ssh/id_ed25519.pub

Auf dem Server:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# Public Key einfügen
chmod 600 ~/.ssh/authorized_keys

Methode 3: Per Pipe

cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Testen

ssh user@server

Sie sollten jetzt ohne Passwort angemeldet werden (oder nur mit der Key-Passphrase).

Passwort-Authentifizierung deaktivieren

Wichtig: Erst testen, ob der Key funktioniert!

Auf dem Server /etc/ssh/sshd_config bearbeiten:

PasswordAuthentication no
PubkeyAuthentication yes

SSH-Dienst neu laden:

systemctl reload sshd

Mehrere Keys verwalten

Verschiedene Keys für verschiedene Server

ssh-keygen -t ed25519 -f ~/.ssh/id_work -C "work"
ssh-keygen -t ed25519 -f ~/.ssh/id_personal -C "personal"

SSH-Config für einfache Verwaltung

Erstellen Sie ~/.ssh/config:

Host server1
    HostName 192.168.1.100
    User root
    IdentityFile ~/.ssh/id_ed25519

Host arbeit
    HostName work.example.com
    User admin
    IdentityFile ~/.ssh/id_work
    Port 2222

Host github.com
    IdentityFile ~/.ssh/id_github

Dann einfach:

ssh server1
ssh arbeit

SSH-Agent (Passphrase cachen)

Wenn Ihr Key eine Passphrase hat, können Sie diese cachen:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Die Passphrase wird bis zum Logout gecacht.

Automatisch beim Login starten

In ~/.bashrc oder ~/.zshrc:

if [ -z "$SSH_AUTH_SOCK" ]; then
    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_ed25519
fi

Windows: SSH-Keys mit PuTTY

Key erstellen mit PuTTYgen

1. PuTTYgen starten 2. "Generate" klicken und Maus bewegen 3. Passphrase eingeben (optional) 4. "Save private key" (.ppk-Datei) 5. Public Key aus dem Textfeld kopieren

Key in PuTTY verwenden

1. PuTTY öffnen 2. Connection → SSH → Auth → Credentials 3. "Private key file for authentication" → .ppk-Datei auswählen 4. Session speichern

Bestehenden Key zu Server hinzufügen

Wenn Sie mehrere Computer haben:

# Auf dem neuen Computer: Public Key anzeigen
cat ~/.ssh/id_ed25519.pub

# Auf dem Server: Zum authorized_keys hinzufügen
echo "ssh-ed25519 AAAAC3... user@host" >> ~/.ssh/authorized_keys

Sicherheits-Best-Practices

1. Private Key schützen: Niemals teilen, chmod 600 2. Passphrase verwenden: Zusätzlicher Schutz bei Diebstahl 3. Ein Key pro Gerät: Einfacher zu widerrufen 4. Regelmäßig rotieren: Alte Keys entfernen 5. Ed25519 bevorzugen: Moderner und sicherer als RSA

Key widerrufen

Auf dem Server die Zeile aus ~/.ssh/authorized_keys entfernen:

nano ~/.ssh/authorized_keys
# Zeile mit dem alten Key löschen

Troubleshooting

"Permission denied (publickey)"

1. Key auf Server vorhanden? cat ~/.ssh/authorized_keys 2. Berechtigungen? chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys 3. Richtiger Key? ssh -v user@server für Debug-Ausgabe

Agent hat Key nicht

ssh-add -l          # Geladene Keys anzeigen
ssh-add ~/.ssh/id_ed25519  # Key hinzufügen

Falscher Key wird verwendet

ssh -i ~/.ssh/richtiger_key user@server

Oder in ~/.ssh/config den IdentityFile festlegen.

Fazit

SSH-Keys sind sicherer und bequemer als Passwörter. Die Einrichtung dauert 5 Minuten und Sie müssen sich nie wieder ein Server-Passwort merken. Deaktivieren Sie nach der Einrichtung unbedingt die Passwort-Authentifizierung auf dem Server.