All notable changes to LSSHM are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.4.1 - 2026-07-30
- Windows menu no longer exits immediately in remote OpenSSH / PowerShell
sessions: interactive detection now uses console stdin/stdout attachment
instead of
[Environment]::UserInteractivealone (often false over SSH).
0.4.0 - 2026-07-28
- Internationalization (i18n) of both the Linux (
lsshm.sh) and Windows (lsshm.ps1) CLIs. English is now the source/default language, with built-in French (fr) and Spanish (es) catalogs. - Language selection prompt at install time (and on first run), pre-selected
from the system locale (
LC_ALL/LC_MESSAGES/LANGon Linux,CurrentUICultureon Windows). - Persisted language choice in the configuration (
languagekey on Linux,config.jsonon Windows), overridable per invocation with--lang <code>(Linux) /-Lang <code>(Windows). - "Change the language" entry in the Settings menu (CLI and
dialogUI). gettext-style translation helpers with automatic fallback to the English source string when a translation is missing.
install/uninstall/update/version/help/serverno longer prompt for a target user (personal SSH context is irrelevant there).- Root target-user picker is resilient to
set -efailures inside$(prompt). - Menu actions that fail or are cancelled no longer exit the whole script
(
set -e); the menu loop continues.
0.3.1 - 2026-07-18
- Key listing / picker no longer misses existing
*.pubpairs (bash array was filled inside a subshell via$(lsshm_keys_collect)). - As root,
authorized_keyswrites now alwayschownto the target user (StrictModes-safe). - Rollback archive path no longer polluted by status messages on stdout.
host revoke-keyactually sends the key body to the remote ($1, not env).- Host delete/edit and
known_hostsremove preserve ownership for the managed user; edit restores the previous config if add is cancelled. ~/IdentityFile expansion uses the managed user's home, not process$HOME.- Privileged
mkdirof another user's~/.sshnow sets ownership. - Temp files created inside
$(...)are tracked for EXIT cleanup; rollback scripts usepersisttemps. sshd -Tcache is file-backed so it survives command-substitution subshells.- Duplicate detection for access add also matches LSSHM-DISABLED entries.
0.3.0 - 2026-07-18
- As root (direct login or sudo), interactive choice of which user's personal
SSH files to administer (
authorized_keys, keys,~/.ssh/config). - Target-user picker in Access, Keys, and Settings menus; correct ownership when generating keys or editing hosts for another user.
- Opening the menu as a normal user no longer asks for the sudo password
multiple times:
sshd -Tis cached, status reads fall back to config files, and sudo is primed once per session when a privileged action is needed.
0.2.0 - 2026-07-18
- Windows PowerShell CLI (
lsshm.ps1) with the same menu structure as Linux: local SSH server, incoming access, outgoing keys, and remote hosts. - Windows OpenSSH paths (
%ProgramData%\ssh\,administrators_authorized_keys) andsshdservice management. - Run-without-install documentation for Linux and Windows in README.
- Fail-closed SHA-256 verification for update and install.
- Dangerous SSH changes always arm automatic rollback (no bypass via
-y). - Safe remote key revoke (
host revoke-key) with literal matching. - Consistent
authorized_keysindexing for list / remove / disable. PubkeyAuthentication notreated as a dangerous change.- Dialog UI trap preserves temporary-file cleanup.
- CI: executable scripts, tracked
authorized_keys.sh/known_hosts.sh.
0.1.0 - 2026-07-14
- Local user installation under the XDG base directories
(
~/.local/bin,~/.local/share,~/.config,~/.local/state,~/.cache). - Single-file distribution (
lsshm.sh) that acts as program, installer, updater, and uninstaller. - Modular source tree under
src/assembled byscripts/build.sh. - Dependency-free CLI menu (
lsshm) split into four clearly separated areas: local SSH server, incoming access, local outgoing keys, and remote hosts. - Optional
dialogterminal interface (lsshm ui/lsshm --ui) with an offer to installdialogwhen missing. - Platform detection: distribution, package manager, service manager,
systemd presence, virtualization type, and
sshdpaths. - Privilege handling that keeps unprivileged operations without
sudoand detects the calling user throughSUDO_USER. - Local OpenSSH server management: detection, installation, start, stop, restart, reload, enable, disable, status, config test, and logs.
- Effective configuration reading with
sshd -Tand validation withsshd -t. - Managed drop-in configuration file
00-lsshm.confwithIncludeand early-definition detection. - Human-readable
PermitRootLogin,PasswordAuthentication,PubkeyAuthentication,AllowUsers, andAllowGroupsmanagement. - Automatic rollback for dangerous changes using
systemd-runwith anohupfallback. - Incoming access management (
authorized_keys): list, add, import, remove, disable, comment, permission repair, and duplicate detection. - Local key management: detection, ED25519/RSA generation, inspection, fingerprints, export, passphrase change, and safe deletion.
ssh-agentmanagement: list, add, and remove keys.- Remote host management through
~/.ssh/config: list, add, edit, delete, test, connect, copy-key, and effective config withssh -G. known_hostsmanagement: list, show, and remove fingerprints.- Logs and diagnostics (
lsshm logs,lsshm doctor). - Local security audit (
lsshm audit). - Backup and restore of managed SSH files.
- Safe self-update from the repository (
lsshm update,lsshm update rollback) with temporary download,bash -ncheck, SHA-256 verification, atomic replacement, and previous-version retention.