3.0 KiB
3.0 KiB
SSH-Zertifikatsbasierter Login mit temporären Benutzer-Zertifikaten
Dieses Repository enthält ein Bash-basiertes System zur Nutzung von SSH-Zertifikaten für den Login auf Zielsysteme. Ein zentraler Zertifizierungsserver (CA-VM) signiert temporäre SSH-Schlüssel, die anschließend zum kurzzeitigen Login verwendet werden.
✨ Features
- Automatisches Erzeugen eines temporären SSH-Keypairs
- Zertifizierung des Public Keys über zentrale CA (Zertifikatslaufzeit konfigurierbar)
- Automatischer Login auf Ziel-VM mit dem zertifizierten Key
- Optionale Unterstützung für agent-forwarding und Passwort-lose Nutzung
- Sicherheit durch kurze Zertifikatsgültigkeit (z. B. 5 Minuten)
📁 Dateien
get_cert_and_connect.sh
Das Hauptskript, das:
- ein temporäres SSH-Schlüsselpaar erzeugt
- den Public Key zur CA überträgt
- dort signieren lässt
- das signierte Zertifikat abruft
- sich mit dem temporären Schlüssel+Zertifikat auf die Ziel-VM verbindet
remote_sign.sh
Wird auf der CA-VM abgelegt. Dieses Skript signiert einen übergebenen Public Key mit dem CA-Schlüssel für einen bestimmten Nutzer und eine begrenzte Zeitspanne.
⚙️ Voraussetzungen
Auf der CA-VM:
- Der CA-Key (
ca_key) befindet sich auf der CA-VM unter/home/alf/ca_key - Die Datei
remote_sign.shist dort vorhanden und ausführbar - Optional: SSH-Agent mit geladener Passphrase (oder Passphrase entfernen)
Auf dem Client (Rechner 1):
- SSH-Zugriff auf die CA-VM (z. B.
ssh alf@ca-vm) - SSH-Zugriff auf das Zielsystem
scp,ssh,ssh-keygenverfügbar- Agent-Weiterleitung (optional, aber empfohlen)
🚀 Nutzung
Führe auf deinem lokalen Rechner das Hauptskript aus:
./get_cert_and_connect.sh
Das Skript erledigt folgende Schritte automatisch:
- Generiert ein temporäres SSH-Schlüsselpaar
- Überträgt den Public Key zur CA-VM
- Lässt den Key dort signieren (Zertifikat wird erstellt)
- Holt das Zertifikat wieder ab
- Verwendet den temporären Key + Zertifikat für den SSH-Login zur Ziel-VM
🔐 Sicherheitshinweise
- Zertifikate sind standardmäßig nur 5 Minuten gültig (konfigurierbar)
- Der private CA-Schlüssel auf der CA-VM sollte durch Dateiberechtigungen geschützt sein (
chmod 600) - Wenn der CA-Key passwortgeschützt ist:
- entweder
ssh-agentverwenden und Agent-Zugriff erlauben - oder bewusst auf Passphrase verzichten (nur bei gut abgesicherter CA-VM)
- entweder
- Agent-Weiterleitung (
ssh -A) wird unterstützt und empfohlen
🧪 Beispielhafte Konfiguration (sshd_config auf Ziel-VM)
# Für nutzerbasierte Zertifikatsauthentifizierung:
TrustedUserCAKeys /etc/ssh/user_ca.pub
# Nur Zertifikats-Login erlauben (optional):
PubkeyAuthentication yes
AuthorizedKeysFile none
Vergiss nicht, den CA-Public-Key (ca_key.pub) auf dem Zielsystem unter /etc/ssh/user_ca.pub abzulegen und den SSH-Dienst neu zu starten:
sudo systemctl restart sshd
📦 Lizenz
MIT License – siehe LICENSE