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

100 lines
3.0 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.

This file contains Unicode characters that might be confused with other characters. 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
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)