Files
sshkeyvault/tests/ssh-ziel/Dockerfile
T
florian.wildeandClaude Opus 5.5 e89112a761 test: SSH-Testziele und Mock-OIDC fuer Integrationstests (#011)
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>
2026-10-12 09:13:56 +02:00

39 lines
1.8 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
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-Testziel fuer Integrationstests (#011). NUR fuer Tests und Entwicklung!
#
# Absichtlich offen konfiguriert (root-Login und Passwort-Anmeldung erlaubt): Das Ziel
# bildet einen frisch installierten Host vor dem Bootstrap nach, auf dem sshkv sich
# einmalig per Passwort anmeldet und dann seinen Deployment-Key hinterlegt.
FROM debian:trixie-slim
# openssh-client: Host-zu-Host-Tests (Ziel A ruft ssh/ssh-keyscan nach Ziel B auf).
# procps: pgrep/ps fuer Healthcheck und Fehlersuche.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
openssh-server openssh-client sudo passwd procps \
&& rm -rf /var/lib/apt/lists/* \
# Host-Keys aus dem Paket-Postinst entfernen: Sie wuerden sonst im Image-Layer
# landen und jeder Container haette dieselben Keys. Erzeugt wird beim Start.
&& rm -f /etc/ssh/ssh_host_* \
&& mkdir -p /run/sshd \
&& useradd --create-home --shell /bin/bash --groups sudo test
# Passwoerter werden beim Start aus der Umgebung gesetzt, damit Compose sie ohne
# Neubau aendern kann; die Build-Args liefern nur die Standardwerte.
ARG ROOT_PASSWORT=sshkv-test
ARG TEST_PASSWORT=sshkv-test
ENV SSHKV_ROOT_PASSWORT=${ROOT_PASSWORT} \
SSHKV_TEST_PASSWORT=${TEST_PASSWORT}
COPY sshd-test.conf /etc/ssh/sshd_config.d/10-sshkv-test.conf
COPY --chmod=0755 einstieg.sh /usr/local/sbin/einstieg
COPY --chmod=0755 hostkeys-tauschen.sh /usr/local/bin/hostkeys-tauschen
EXPOSE 22
# Prueft, ob sshd wirklich einen Host-Key ausliefert – ein laufender Prozess allein
# heisst nach einem Neuladen noch nicht, dass er schon Verbindungen annimmt.
HEALTHCHECK --interval=2s --timeout=3s --start-period=5s --retries=15 \
CMD ssh-keyscan -T 2 -t ed25519 127.0.0.1 2>/dev/null | grep -q ssh-ed25519
ENTRYPOINT ["/usr/local/sbin/einstieg"]