# 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: 1. ein temporäres SSH-Schlüsselpaar erzeugt 2. den Public Key zur CA überträgt 3. dort signieren lässt 4. das signierte Zertifikat abruft 5. 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.sh` ist 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-keygen` verfü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: 1. Generiert ein temporäres SSH-Schlüsselpaar 2. Überträgt den Public Key zur CA-VM 3. Lässt den Key dort signieren (Zertifikat wird erstellt) 4. Holt das Zertifikat wieder ab 5. 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-agent` verwenden und Agent-Zugriff erlauben - oder bewusst auf Passphrase verzichten (nur bei gut abgesicherter CA-VM) - **Agent-Weiterleitung (`ssh -A`)** wird unterstützt und empfohlen --- ## 🧪 Beispielhafte Konfiguration (`sshd_config` auf Ziel-VM) ```conf # 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](LICENSE)