gitea's forge-account reads the forge's own host key file before scanning its sshd, so a forge restart no longer refuses every forge account (issue 1939) #472

Merged
mesh-tools merged 1 commits from fix/1939-forge-host-key into main 2026-10-24 20:05:39 +00:00
Member

Issue 1939: forge-account ran ssh-keyscan against the forge's sshd; while the forge restarts that fails for every node and module pair ('the forge's ssh host key cannot be read: ssh-keyscan: exit status 1'). Met twice, the second time at 13:23:15 today on novox right after gitea was redelivered.

forge-account now reads ${dir:data}/ssh/ssh_host_ed25519_key.pub (public key only) first, then scans the sshd, then keeps the key it read before; it errors only when none gives a key. Tests: a failing scan still gets the key from the file; a missing file falls back to the scan; a restarting forge keeps the earlier key. Hardening notes (logging the fallbacks, an unparseable file) are on issue 1939, note 3.

Reviewed-by: review-1939@shanks at 75156fce00
Pushed-by: lead-47@shanks

Issue 1939: forge-account ran ssh-keyscan against the forge's sshd; while the forge restarts that fails for every node and module pair ('the forge's ssh host key cannot be read: ssh-keyscan: exit status 1'). Met twice, the second time at 13:23:15 today on novox right after gitea was redelivered. forge-account now reads ${dir:data}/ssh/ssh_host_ed25519_key.pub (public key only) first, then scans the sshd, then keeps the key it read before; it errors only when none gives a key. Tests: a failing scan still gets the key from the file; a missing file falls back to the scan; a restarting forge keeps the earlier key. Hardening notes (logging the fallbacks, an unparseable file) are on issue 1939, note 3. Reviewed-by: review-1939@shanks at 75156fce007e15536f7f706b430cba5d367b2d39 Pushed-by: lead-47@shanks
mesh-tools added 1 commit 2026-10-24 11:26:13 +00:00
gitea: forge-account reads the forge's own host key file before scanning its sshd (issue 1939)
mesh/check pass 75156fce007e on c65116178720 | unit 246 run, 4192 kept | integration 228 run, 4252 kept | over bound: unit, integration (slowest unit …
mesh/delivery delivered
75156fce00
Author
Member

Delivery novox/mesh-catalog@75156fce007e — delivered since 2026-10-24T20:07:33Z

Delivery plan — builds gitea → novox; no bus step

  • tier 0: gitea
  • novox: receives gitea
  • gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it
  • gitea keeps data (ADR 0233): what it holds is backed up before it moves

Machines

  • gitea on every machine running it: sent

Transitions

  • 2026-10-24 11:26 (new) → proposed (announced): novox/mesh-catalog#472's head announced
  • 2026-10-24 11:28 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-24 11:28 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-24 19:47 ready → proposed (trunk moved): out of date: judged against trunk 25176e1ccd, the trunk is now ee216e4e63f1; judged again on a recheck or when it is merged
  • 2026-10-24 20:05 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-24 20:05 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-24 20:05 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-24 20:05 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
  • 2026-10-24 20:07 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-catalog@75156fce007e` — **delivered** since 2026-10-24T20:07:33Z **Delivery plan** — builds gitea → novox; no bus step - tier 0: gitea - novox: receives gitea - gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it - gitea keeps data (ADR 0233): what it holds is backed up before it moves **Machines** - gitea on every machine running it: sent **Transitions** - 2026-10-24 11:26 (new) → proposed (announced): novox/mesh-catalog#472's head announced - 2026-10-24 11:28 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-24 11:28 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-24 19:47 ready → proposed (trunk moved): out of date: judged against trunk 25176e1ccdb3, the trunk is now ee216e4e63f1; judged again on a recheck or when it is merged - 2026-10-24 20:05 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-24 20:05 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-24 20:05 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-24 20:05 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit - 2026-10-24 20:07 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh-tools merged commit c651161787 into main 2026-10-24 20:05:39 +00:00
mesh-tools deleted branch fix/1939-forge-host-key 2026-10-24 20:05:39 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#472