diff --git a/Spickzettel.md b/Spickzettel.md new file mode 100644 index 0000000..9e89cc9 --- /dev/null +++ b/Spickzettel.md @@ -0,0 +1,289 @@ +# SSH-CA – Erinnerungszettel + +## Grundidee + +Ich verwende **OpenSSH-Zertifikate** anstelle von dauerhaft hinterlegten Public Keys auf meinen Servern. + +Der **private CA-Schlüssel** befindet sich ausschließlich auf der **CA-VM**. + +Alle Server kennen lediglich den **öffentlichen CA-Schlüssel** (`ca_key.pub`) und vertrauen damit allen von meiner CA ausgestellten Zertifikaten. + +Dadurch muss ich **keine `authorized_keys` mehr pflegen**. + +--- + +# Komponenten + +## CA-VM + +Enthält: + +* privaten CA-Key (`ca_key`) +* öffentlichen CA-Key (`ca_key.pub`) +* `remote_sign.sh` + +Aufgabe: + +* Zertifiziert Public Keys. + +--- + +## Client + +Enthält: + +* `login.sh` +* `certify.sh` +* `~/.ssh/id_ca` (Anmeldung an der CA) +* Logging +* `gum` + +--- + +## Zielserver + +Benötigen nur: + +``` +TrustedUserCAKeys /etc/ssh/trusted-user-ca-keys.pem +``` + +sowie + +``` +/etc/ssh/trusted-user-ca-keys.pem +``` + +mit dem Inhalt von + +``` +ca_key.pub +``` + +--- + +# Normaler Login + +Einfach + +```bash +./login.sh +``` + +Das Skript + +1. erzeugt einen temporären Schlüssel, +2. sendet den Public Key zur CA, +3. lässt ihn signieren, +4. holt das Zertifikat zurück, +5. baut die SSH-Verbindung auf. + +--- + +# Vorhandenen Schlüssel signieren + +```bash +./certify.sh +``` + +Danach + +* Public Key auswählen +* Benutzer (Principals) auswählen +* Gültigkeit auswählen + +Das Zertifikat wird automatisch erzeugt und neben dem Schlüssel gespeichert. + +Prüfen: + +```bash +ssh-keygen -L -f ~/.ssh/-cert.pub +``` + +--- + +# ToDo: Neues Gerät hinzufügen + +## 1. SSH installieren + +Falls nötig. + +--- + +## 2. Öffentlichen CA-Schlüssel kopieren + +``` +ca_key.pub +``` + +nach + +``` +/etc/ssh/trusted-user-ca-keys.pem +``` + +--- + +## 3. SSH konfigurieren + +Falls vorhanden: + +``` +/etc/ssh/sshd_config.d/ca.conf +``` + +Inhalt: + +``` +TrustedUserCAKeys /etc/ssh/trusted-user-ca-keys.pem +``` + +Alternativ den Eintrag direkt in die + +``` +/etc/ssh/sshd_config +``` + +aufnehmen. + +--- + +## 4. SSH neu laden + +```bash +sudo systemctl restart ssh +``` + +oder + +```bash +sudo systemctl restart sshd +``` + +--- + +## 5. Konfiguration prüfen + +```bash +sudo sshd -t +``` + +und + +```bash +sudo sshd -T | grep trustedusercakeys +``` + +--- + +## 6. Testlogin + +Mit + +```bash +./login.sh +``` + +--- + +# ToDo: Schlüssel per Hand signieren + +## Public Key hochladen + +```bash +scp -i ~/.ssh/id_ca ~/.ssh/id_ed25519.pub alf@:/tmp/ +``` + +--- + +## Signieren + +```bash +ssh -i ~/.ssh/id_ca alf@ +``` + +```bash +/home/alf/remote_sign.sh /tmp/id_ed25519.pub alf 3600 +``` + +Mehrere Benutzer: + +```bash +/home/alf/remote_sign.sh /tmp/id_ed25519.pub alf,root,oberkoetter 3600 +``` + +--- + +## Zertifikat zurückholen + +```bash +scp -i ~/.ssh/id_ca \ +alf@:/tmp/id_ed25519-cert.pub \ +~/.ssh/ +``` + +--- + +## Zertifikat prüfen + +```bash +ssh-keygen -L -f ~/.ssh/id_ed25519-cert.pub +``` + +--- + +# Nützliche Befehle + +## Zertifikat anzeigen + +```bash +ssh-keygen -L -f +``` + +--- + +## SSH-Konfiguration prüfen + +```bash +sudo sshd -t +``` + +--- + +## Effektive SSH-Konfiguration + +```bash +sudo sshd -T +``` + +--- + +## CA-Eintrag kontrollieren + +```bash +sudo sshd -T | grep trustedusercakeys +``` + +--- + +# Wichtig + +✔ Der **private CA-Key** verlässt niemals die CA-VM. + +✔ Auf den Servern liegt ausschließlich der **öffentliche CA-Key**. + +✔ Zertifikate sind nur kurz gültig. + +✔ Neue Server benötigen lediglich den öffentlichen CA-Key und den Eintrag `TrustedUserCAKeys`. + +✔ Neue Benutzer müssen nicht mehr in `authorized_keys` verteilt werden. + +--- + +# Nächste Ausbaustufen + +* Ansible-Rolle für neue Server +* Gemeinsame `config.sh` +* Gemeinsame `lib.sh` +* Automatische Pflege der `~/.ssh/config` +* Optional Weboberfläche für die CA