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>
1.8 KiB
1.8 KiB
#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 mitvisudo -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/shadowunverändert. - CRLF: Das Bootstrap-Skript entfernt
\raus authorized_keys. Die bytegenaue Erhaltung fremder Zeilen leistet erst der TS-Merge aus #015. - sshd-Hinweise (nur Anzeige):
PermitRootLogin yes→ Empfehlungprohibit-password; abweichendesAuthorizedKeysFile→ Warnung.