Files
ssh-cert-auth/README.md
2025-07-02 11:03:50 +00:00

54 lines
1.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```bash
./get_cert_and_connect.sh