SSH Keys Einrichten Anleitung
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
- Passphrase verwenden: Schützt bei Diebstahl des Schlüssels
- Ed25519 bevorzugen: Moderner und sicherer als RSA
- Verschiedene Keys: Separater Key pro Dienst/Server
- Private Key schützen: Niemals teilen, chmod 600
- Passwort-Login deaktivieren: Nach Key-Setup auf Server
- Regelmäßig rotieren: Keys alle 1-2 Jahre erneuern
Weitere Hilfe
- 📖 SSH Academy
- 📧 E-Mail: support@enjyn.de