Skip to content

Add stored SSH key replacement - #96

Merged
bifrost0x merged 1 commit into
mainfrom
dev/replace-stored-key
Aug 12, 2026
Merged

Add stored SSH key replacement#96
bifrost0x merged 1 commit into
mainfrom
dev/replace-stored-key

Conversation

@bifrost0x

Copy link
Copy Markdown
Owner

Summary

Adds a safe way to replace the private key material behind an existing stored SSH key without changing its stable key ID.

  • Adds a Replace action to SSH key management
  • Preserves profile and jump-host references
  • Requires the replacement to use the same actual key type
  • Rejects inconsistent legacy key metadata before writing
  • Atomically replaces encrypted key data and restores the previous ciphertext if writing or verification fails
  • Adds audit events without logging private key content
  • Warns operators to install the matching public key on all targets first
  • Keeps active sessions connected while future connections use the replacement key

Why

Deleting and re-uploading a key breaks every saved profile and jump host that references its ID. Replacing only the encrypted key material keeps those references intact and makes routine key rotation practical.

Related discussion: #59

Validation

  • 1,468 Python tests passed
  • 155 JavaScript tests passed
  • 16 relevant Playwright tests passed
  • ESLint passed
  • Vendored frontend assets verified
  • Independent code review completed

@bifrost0x
bifrost0x marked this pull request as ready for review August 12, 2026 09:38
@bifrost0x bifrost0x self-assigned this Aug 12, 2026
@bifrost0x bifrost0x added enhancement New feature or request security labels Aug 12, 2026
@bifrost0x
bifrost0x merged commit 842aff3 into main Aug 12, 2026
15 of 16 checks passed
@bifrost0x
bifrost0x deleted the dev/replace-stored-key branch August 12, 2026 09:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request security

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant