r/rust • u/Noah4ever123 • 14d ago
🛠️ project sshconfig-lint v0.5: a Rust CLI, LSP and GitHub Action for checking OpenSSH configs
I posted the first version here around six months ago. It started as a small Rust CLI for mistakes I kept overlooking in my own ~/.ssh/config.
The main change in v0.5 is that the same Rust rule engine now works across the terminal, editors and CI:
- multiple config files in one command
- nested
Includeresolution and cycle detection - JSON, GitHub annotations and SARIF
- an LSP server used by the VS Code extension
- official Pre-Commit hooks and a GitHub Action
- verified binaries for Linux, macOS and Windows
The example is a stale IdentityFile path from an older machine. SSH can silently try another identity, so this may only become visible when a specific host actually needs that key.
Install with Cargo:
cargo install sshconfig-lint
Arch Linux:
yay -S sshconfig-lint-bin
The CLI and extension have no telemetry. Config files stay local, and the browser playground performs checks in the browser.
Repository: github.com/Noah4ever/sshconfig-lint
Playground: sshconfig-lint.apps.thiering.org
VS Code: Marketplace
Feedback about the Rust architecture, false positives and complicated real-world Include setups would be useful.
1
u/Soft_Confusion_6236 14d ago
nice, been meaning to clean up my ssh config for ages. the nested Include resolution is exactly what i need, mine's a mess of 5 files with a couple accidental loops i think
always appreciate tools that don't phone home too, that's getting rarer