Files
sshkeyvault/docs/issues/010-bootstrap.md
T
florian.wildeandClaude Opus 5.5 4584669962 feat(hosts): Host-Key und Bootstrap in der Oberflaeche (#009, #010)
Auf der Hostseite: Host-Key abrufen, Fingerprint vergleichen und
vertrauen oder ablehnen. Weicht ein Key vom vertrauten ab, erscheint
eine deutliche Warnung, und Annehmen geht nur mit Haekchen und frischer
Bestaetigung. Danach Bootstrap per Einmal-Passwort oder per Befehl und
Verbindungspruefung, jeweils mit Fortschrittsanzeige.

Der sshd-Befund empfiehlt prohibit-password, wenn root sich per
Passwort anmelden darf - nur als Hinweis, geaendert wird nichts.

E2E im gebauten Stand mit Worker gegen ein echtes sshd.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:00:43 +02:00

1.8 KiB
Raw Blame History

#010 Bootstrap neuer Hosts

Status: erledigt Meilenstein: v0.1.0 Labels: backend, ui Geschätzt: 4 h Tatsächlich: 0 h 35 min

Ziel

Deployment-Key auf neuen Host bringen: einmalige Passwortanmeldung (nie gespeichert) oder Copy-Paste-Befehl. Dienstbenutzer sshkv + sudoers.

Aufgaben

  • Einmal-Passwort nur im Arbeitsspeicher des Workers, verschlüsselt im Job, danach gelöscht
  • Bootstrap-Skript: Benutzer sshkv, /etc/sudoers.d/sshkv (geprüft mit visudo -c), Deployment-Key in verwaltetem Block
  • Alternative: Befehl zum Kopieren
  • Prüfung nach Bootstrap: Anmeldung per Schlüssel, sudo ohne Passwort
  • sshd-Check: PermitRootLogin, PasswordAuthentication (nur Anzeige)

Akzeptanzkriterien

  • Integrationstest gegen Test-Container: Bootstrap per Passwort und per Befehl
  • Passwort taucht nirgends in DB, Logs oder Protokoll auf

Abhängigkeiten

#009

Notizen / Entscheidungen

  • Ein Skript für beide Wege (Passwort im Worker, Befehl zum Kopieren) – keine zwei Wahrheiten über Änderungen am Host.
  • Passwort: reist verschlüsselt (SSHKV_APP_SECRET) nur im Job, Job wird nach dem Lauf gelöscht; Test: Passwort steht in keiner Tabelle. JS-Strings lassen sich nicht überschreiben – das Passwort lebt bis zur Speicherbereinigung im Worker-Speicher.
  • Nicht-root mit sudo-Passwort wird unterstützt (sudo -S).
  • Symlink-Schutz: Dateien im Home des Zielbenutzers liest und schreibt das Skript als dieser Benutzer (runuser). Test mit Symlink auf /etc/shadow: Abbruch, /etc/shadow unverändert.
  • CRLF: Das Bootstrap-Skript entfernt \r aus authorized_keys. Die bytegenaue Erhaltung fremder Zeilen leistet erst der TS-Merge aus #015.
  • sshd-Hinweise (nur Anzeige): PermitRootLogin yes → Empfehlung prohibit-password; abweichendes AuthorizedKeysFile → Warnung.