
sshconfig-lint v0.5.0
Linter basato su regole per i file di configurazione del client OpenSSH che rileva host duplicati, file di identità mancanti, algoritmi deboli, problemi di ordinamento dei wildcard e impostazioni pericolose, con output JSON e codici di uscita compatibili con CI.
sshconfig-lint
Un unico motore per ogni luogo in cui cambia la tua configurazione SSH.
sshconfig-lint individua errori semantici nelle configurazioni client OpenSSH: host duplicati, percorsi IdentityFile errati, opzioni non sicure, algoritmi deboli, ordinamento dei wildcard e catene Include intricate. Usa gli stessi codici di regola in locale, nei Git hooks, nelle GitHub Actions e negli editor.
Prova il playground browser privato · Impara con esempi interattivi · Leggi ogni regola
Il controllo nel browser viene eseguito sul tuo dispositivo. I contenuti della configurazione non vengono caricati e non viene raccolta alcuna telemetria.
Avvio rapido
# controlla ~/.ssh/config
sshconfig-lint
# controlla una o più configurazioni del repository
sshconfig-lint .ssh/config infrastructure/ssh_config
# fallisci su warning ed errori
sshconfig-lint .ssh/config --strict
Installazione
Homebrew
brew tap Noah4ever/tap
brew install sshconfig-lint
Cargo
cargo install sshconfig-lint
Arch Linux
yay -S sshconfig-lint-bin
La pagina delle release fornisce binari verificati per Linux, macOS e Windows. L'installer di comodo verifica il checksum della release prima di installare:
curl -fsSL https://raw.githubusercontent.com/Noah4ever/sshconfig-lint/main/install.sh | bash
Imposta VERSION=v0.5.0 o INSTALL_DIR=~/.local/bin per sovrascrivere i valori predefiniti.
GitHub Actions
name: SSH config
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Noah4ever/[email protected]
with:
paths: |
.ssh/config
infrastructure/ssh_config
strict: true
I risultati appaiono come annotazioni sul file e sulla riga esatti. L'Action scarica la release corrispondente al suo tag e verifica SHA256SUMS prima dell'esecuzione.
Per i repository con GitHub Code Scanning abilitato, il SARIF può essere caricato separatamente:
- run: sshconfig-lint .ssh/config --format sarif > sshconfig-lint.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: sshconfig-lint.sarif
Pre-Commit
repos:
- repo: https://github.com/Noah4ever/sshconfig-lint
rev: v0.5.0
hooks:
- id: sshconfig-lint-strict
Usa id: sshconfig-lint quando i warning non devono bloccare un commit. Sovrascrivi files: nel tuo progetto quando le configurazioni usano una convenzione di denominazione diversa.
Editor
Installa l'estensione VS Code dal Marketplace oppure esegui:
code --install-extension NoahThiering.sshconfig-lint
L'estensione avvia sshconfig-lint lsp, scarica una volta un binario verificato corrispondente e poi funziona offline. Riconosce .ssh/config, ssh_config e dot_ssh/config di chezmoi. Non viene raccolta alcuna telemetria. Il suo codice sorgente è disponibile in editors/vscode.
Qualsiasi editor con supporto LSP può avviare:
sshconfig-lint lsp
Il language server v0.5 pubblica diagnostiche su riga intera all'apertura, alla modifica e al salvataggio. I buffer senza titolo eseguono regole solo sui contenuti; i file salvati risolvono inoltre Include e percorsi del filesystem.
Formati di output
sshconfig-lint --format text
sshconfig-lint --format json
sshconfig-lint --format github
sshconfig-lint --format sarif
I risultati JSON contengono severity, code, rule, line, file, message, hint e documentation. I codici di regola e i codici di uscita sono interfacce di automazione stabili.
| Exit | Significato |
|---|---|
0 | Nessun risultato di livello errore e nessun warning con --strict |
1 | Almeno un risultato bloccante |
2 | Almeno una configurazione richiesta non può essere letta |
Regole
| Codice | Regola | Severità |
|---|---|---|
DUP_HOST | Blocco Host duplicato | warning |
MISSING_IDENTITY | IdentityFile non trovato | error |
WILDCARD_ORDER | Ordine dei wildcard Host | warning |
WEAK_ALGO | Algoritmo debole | warning |
DUP_DIRECTIVE | Direttiva duplicata | warning |
INSECURE_OPT | Opzione non sicura | warning |
UNSAFE_CTRL_PATH | ControlPath non sicuro | warning |
INCLUDE_CYCLE | Ciclo Include | error |
INCLUDE_READ | Include non leggibile | error |
INCLUDE_GLOB | Pattern Include non valido | error |
INCLUDE_NO_MATCH | Include non corrisponde a nessun file | info |
Le guide delle regole mostrano il frammento esatto non valido, una configurazione corretta, perché è importante e come verificare il risultato con OpenSSH.
Sviluppo
Richiede Rust 1.85 o successivo.
cargo test --all
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt -- --check
Vedi CONTRIBUTING.md, la roadmap pubblica e la politica di sicurezza.
Licenza
MIT