Bootstrap, Host-Key-Pruefung und spaeteres Ausrollen brauchen echte sshd-Gegenstellen. Zwei Debian-13-Container (ziel-a, ziel-b) in einem gemeinsamen Netz bilden frische Hosts vor dem Bootstrap nach: root- und Passwort-Login sind absichtlich offen, Host-Keys entstehen erst beim Start, und `hostkeys-tauschen` erlaubt den Test "geaenderter Host-Key wird abgelehnt" ohne Neuerstellen des Containers. Die Testhilfen lesen dieselben Adress-Variablen wie die Compose-Datei und lassen Tests mit Hinweis auf den Startbefehl fehlschlagen, statt sie still zu ueberspringen - ein uebersprungener Integrationstest sieht sonst wie ein bestandener aus. Der Mock-OIDC-Anbieter ersetzt authentik in der Entwicklung (PLAN.md, Entscheidung 7). Bei interaktivem Login uebernimmt er nur Claims aus dem Formular, daher belegt eine eigene Login-Seite email, name und groups vor und laesst die Gruppen frei waehlen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
31 lines
1.1 KiB
Bash
31 lines
1.1 KiB
Bash
#!/bin/sh
|
||
# Tauscht die Host-Keys des laufenden Testziels (#011). Damit laesst sich pruefen, dass
|
||
# sshkv einen geaenderten Host-Key ablehnt, ohne den Container neu zu erstellen.
|
||
set -eu
|
||
|
||
alt="$(ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub | awk '{print $2}')"
|
||
|
||
rm -f /etc/ssh/ssh_host_*
|
||
ssh-keygen -A >/dev/null
|
||
neu="$(ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub | awk '{print $2}')"
|
||
|
||
# SIGHUP laesst sshd sich neu ausfuehren und dabei die Host-Keys neu lesen. sshd laeuft
|
||
# als PID 1 (siehe einstieg.sh); bestehende Sitzungen bleiben dabei erhalten.
|
||
kill -HUP 1
|
||
|
||
# Erst zurueckkehren, wenn sshd wirklich den neuen Key ausliefert – sonst sieht ein
|
||
# Test direkt danach je nach Timing noch den alten oder gar keinen Key.
|
||
i=0
|
||
while [ "$i" -lt 50 ]; do
|
||
aktuell="$(ssh-keyscan -T 1 -t ed25519 127.0.0.1 2>/dev/null | ssh-keygen -lf - 2>/dev/null | awk '{print $2}')"
|
||
if [ "$aktuell" = "$neu" ]; then
|
||
echo "Host-Keys getauscht: $alt -> $neu"
|
||
exit 0
|
||
fi
|
||
i=$((i + 1))
|
||
sleep 0.2
|
||
done
|
||
|
||
echo "sshd liefert nach dem Tausch nicht den neuen Host-Key aus (erwartet $neu)." >&2
|
||
exit 1
|