hub v0.38.0: offsite SLICE 2 — capture the box host-key fingerprint
Descriptor.HostFingerprint (SHA256, non-secret), captured at provision via an x/crypto/ssh keyscan (SSHHostKeyScanner — dials :23, grabs the host key from the handshake, no ssh binary). Fail-closed: nil scanner or scan failure → error (don't serve a descriptor the controller can't verify). Pairs with controller v0.106.0 which re-scans + refuses on mismatch (no blind TOFU). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
This commit is contained in:
@@ -1,5 +1,17 @@
|
||||
# Felhom Hub — Changelog
|
||||
|
||||
## v0.38.0 — offsite provisioning SLICE 2 (hub side): capture the box host-key fingerprint (2026-07-09)
|
||||
|
||||
Pairs with controller v0.106.0. So the controller can VERIFY the box identity instead of blind-TOFU, the hub
|
||||
captures the box's SSH host-key fingerprint at provision and serves it in the descriptor.
|
||||
|
||||
- `internal/offsite`: `Descriptor.HostFingerprint` (SHA256:…, non-secret). `ProvisionOffsite` now captures it
|
||||
after the resource is ready via a `HostKeyScanner` seam (`SSHHostKeyScanner`, x/crypto/ssh — dials port 23
|
||||
and grabs the host key from the handshake, no ssh binary needed). **Fail-closed:** a nil scanner or a scan
|
||||
failure returns an error (don't serve a descriptor the controller can't verify). The controller re-scans and
|
||||
refuses on mismatch (v0.106.0).
|
||||
- Tests: descriptor carries the fingerprint from a faked scanner; a scan failure fails-closed.
|
||||
|
||||
## v0.37.0 — offsite provisioning SLICE 1: Hetzner Cloud-API client + provisioning core (2026-07-09)
|
||||
|
||||
Slice 1 of the offsite-provisioning epic. On operator enable, the hub provisions a Hetzner storage-box
|
||||
|
||||
Reference in New Issue
Block a user