78 Dokumentationen verfügbar

Wissensdatenbank

SSH Keys Einrichten Anleitung

Zuletzt aktualisiert: 11.01.2026 um 10:22 Uhr

SSH-Keys einrichten: Sichere Server-Authentifizierung

SSH-Keys bieten eine sicherere Alternative zur Passwort-Authentifizierung. Sie bestehen aus einem Schlüsselpaar: einem privaten Schlüssel (bleibt bei Ihnen) und einem öffentlichen Schlüssel (liegt auf dem Server). Diese Anleitung zeigt, wie Sie SSH-Keys erstellen und verwenden.

Warum SSH-Keys?

  • Sicherer: Praktisch unmöglich zu erraten oder per Brute-Force zu knacken
  • Bequemer: Kein Passwort bei jedem Login eingeben
  • Automatisierung: Skripte können sich ohne Passwort verbinden
  • Audit: Jeder Key ist eindeutig zuordenbar

SSH-Keys erstellen

Linux und macOS

# Ed25519 (modern, empfohlen)
ssh-keygen -t ed25519 -C "ihr@email.de"

# Oder RSA (älterer Standard, breiter kompatibel)
ssh-keygen -t rsa -b 4096 -C "ihr@email.de"

Sie werden gefragt:

Enter file in which to save the key (/home/user/.ssh/id_ed25519): [Enter drücken für Standard]
Enter passphrase (empty for no passphrase): [Passphrase eingeben - empfohlen!]
Enter same passphrase again: [Wiederholen]
💡 Tipp: Eine Passphrase schützt Ihren privaten Schlüssel, falls jemand Zugriff auf Ihren Computer erhält. Mit ssh-agent müssen Sie sie nicht bei jeder Verbindung eingeben.

Windows (PowerShell oder Git Bash)

# In PowerShell (Windows 10/11)
ssh-keygen -t ed25519 -C "ihr@email.de"

# Oder in Git Bash
ssh-keygen -t ed25519 -C "ihr@email.de"

Ergebnis

Nach der Erstellung haben Sie zwei Dateien:

Datei Beschreibung Teilen?
~/.ssh/id_ed25519 Privater Schlüssel ❌ NIEMALS teilen!
~/.ssh/id_ed25519.pub Öffentlicher Schlüssel ✅ Auf Server kopieren

Öffentlichen Schlüssel anzeigen

# Öffentlichen Schlüssel ausgeben
cat ~/.ssh/id_ed25519.pub

# Ausgabe sieht so aus:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB... ihr@email.de

SSH-Key auf Server kopieren

Methode 1: ssh-copy-id (Einfachste)

# Automatisch auf Server kopieren
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server.example.com

# Bei anderem Port
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@server.example.com

Methode 2: Manuell kopieren

# 1. Public Key anzeigen und kopieren
cat ~/.ssh/id_ed25519.pub

# 2. Auf Server verbinden (noch mit Passwort)
ssh user@server.example.com

# 3. authorized_keys Datei erstellen/bearbeiten
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

# 4. Public Key einfügen und speichern

# 5. Berechtigungen setzen
chmod 600 ~/.ssh/authorized_keys

Methode 3: Mit einem Befehl

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

SSH-Verbindung testen

# Verbindung ohne Passwort
ssh user@server.example.com

# Mit Debug-Ausgabe bei Problemen
ssh -v user@server.example.com

SSH-Agent verwenden

Der SSH-Agent speichert Ihre Passphrase im Speicher:

Linux/macOS

# Agent starten
eval "$(ssh-agent -s)"

# Schlüssel hinzufügen
ssh-add ~/.ssh/id_ed25519

# Gespeicherte Schlüssel anzeigen
ssh-add -l

Automatisch bei Login (in ~/.bashrc oder ~/.zshrc)

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

SSH-Config für einfachere Verbindungen

Erstellen Sie ~/.ssh/config:

# Webserver
Host webserver
    HostName server.example.com
    User deploy
    Port 22
    IdentityFile ~/.ssh/id_ed25519

# Entwicklungsserver
Host dev
    HostName dev.example.com
    User developer
    Port 2222
    IdentityFile ~/.ssh/id_dev

# GitHub
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_github

# Standardeinstellungen für alle
Host *
    AddKeysToAgent yes
    IdentitiesOnly yes
    ServerAliveInterval 60

Dann können Sie sich einfach verbinden:

ssh webserver
ssh dev

Server absichern: Passwort-Login deaktivieren

⚠️ Wichtig: Stellen Sie VORHER sicher, dass der SSH-Key funktioniert! Sonst sperren Sie sich aus.
# /etc/ssh/sshd_config bearbeiten
sudo nano /etc/ssh/sshd_config

# Diese Zeilen setzen:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM no

# SSH neu starten
sudo systemctl restart sshd

Mehrere Keys verwalten

# Verschiedene Keys für verschiedene Zwecke
ssh-keygen -t ed25519 -f ~/.ssh/id_work -C "work@company.com"
ssh-keygen -t ed25519 -f ~/.ssh/id_personal -C "personal@email.de"
ssh-keygen -t ed25519 -f ~/.ssh/id_github -C "github@email.de"

# In ~/.ssh/config den richtigen Key zuweisen
Host work-server
    IdentityFile ~/.ssh/id_work

Host personal-server
    IdentityFile ~/.ssh/id_personal

Häufige Probleme

Problem Ursache Lösung
Permission denied (publickey) Key nicht auf Server oder falsche Berechtigungen authorized_keys prüfen, chmod 600
Agent has no identities Key nicht im Agent ssh-add ~/.ssh/id_ed25519
Bad permissions Private Key zu offen chmod 600 ~/.ssh/id_ed25519
Connection refused SSH nicht aktiv oder falscher Port Port prüfen, SSH-Dienst starten

Sicherheits-Best-Practices

  1. Passphrase verwenden: Schützt bei Diebstahl des Schlüssels
  2. Ed25519 bevorzugen: Moderner und sicherer als RSA
  3. Verschiedene Keys: Separater Key pro Dienst/Server
  4. Private Key schützen: Niemals teilen, chmod 600
  5. Passwort-Login deaktivieren: Nach Key-Setup auf Server
  6. Regelmäßig rotieren: Keys alle 1-2 Jahre erneuern

Weitere Hilfe