|
Hi, After more usage, here's what I gathered, I put it all together because they present a better picture, it would be better to break them up into smaller issues when implementing. Thank you. WebSSHBetter UI/behavior
Better naming
Better features/productKey rotationSince we know which server uses which keys, in keys, can we have
|
Replies: 6 comments 4 replies
|
HI @bilogic , thx a lot for the suggestions! I will look into this today and see how i can implement it :) |
|
Hi @bilogic, I reviewed the suggestions against the current UI and backend architecture. Several of the UI improvements make sense and can be implemented independently:
I will split these into smaller, reviewable changes instead of treating the discussion as one large feature. Automated key rotation across all associated hosts is a much larger security-sensitive workflow. It would require durable progress tracking, retries, rollback behavior, jump-host handling, safe authorized_keys updates, and recovery from partially completed rotations. I therefore do not plan to include it in the UI improvements. WebSSH already provides an offline backup that includes the encrypted stored keys and, depending on the deployment, the persisted application secret. A user-facing private-key export would be a separate security decision and should not be added implicitly as part of rotation. Thanks again. The UI points are useful and actionable, while the deeper rotation workflow needs separate design work. |
|
Hi @bilogic, Quick update: the agreed UI scope from this discussion has now been implemented and merged in two pull requests:
This completes the UI improvements we committed to in this discussion. Automated cross-host key rotation remains intentionally outside this scope because it requires a separate security and recovery design. One further update: since my earlier comment about the existing offline backup, backup and restore has been implemented comprehensively as a native part of WebSSH itself in #71 - Add admin backup and restore workflow. This is not merely the previously mentioned offline backup. Administrators can now create, download, upload, verify, and restore backups directly from the Administration interface. The implementation uses online-consistent SQLite snapshots, strict archive validation, administrator-only and session-bound access, maintenance mode, rollback protection, and a controlled restart after restore. The existing CLI backup and restore commands remain fully supported and archive-compatible. |
This has been taking up space at the back of my mind and felt I should share my thoughts :)
Ok, that sums up my thoughts these 2 weeks. Thank you. |
|
A draft implementation is now available in #96. It adds a Replace action for stored SSH keys while keeping the stable key ID, so existing profiles and jump hosts continue to reference the key. The replacement must use the same actual key type, inconsistent legacy metadata is rejected before writing, and the encrypted key file is replaced atomically with rollback on write or verification failure. The UI also warns that the matching public key must be installed on all targets first. Active sessions stay connected; future connections use the replacement key. |
|
Update: #96 - Add stored SSH key replacement has now been merged into Stored SSH keys can now be replaced while retaining their stable key ID, so existing saved connections and jump hosts continue to reference them. Existing installations and stored data are not modified automatically - the new code path runs only when an administrator explicitly uses the Replace action. This intentionally remains separate from automated cross-host rotation. The matching public key must first be installed on every target. Active sessions remain connected, while future connections use the replacement key. All CI, browser, SSH integration, container, and security checks passed. |
Update: #96 - Add stored SSH key replacement has now been merged into
main.Stored SSH keys can now be replaced while retaining their stable key ID, so existing saved connections and jump hosts continue to reference them. Existing installations and stored data are not modified automatically - the new code path runs only when an administrator explicitly uses the Replace action.
This intentionally remains separate from automated cross-host rotation. The matching public key must first be installed on every target. Active sessions remain connected, while future connections use the replacement key. All CI, browser, SSH integration, container, and security checks passed.