Torna agli aggiornamenti
New releaseSep 3, 2026

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.

Condividi

sshconfig-lint

Tests crates.io License: MIT

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.

ExitSignificato
0Nessun risultato di livello errore e nessun warning con --strict
1Almeno un risultato bloccante
2Almeno una configurazione richiesta non può essere letta

Regole

CodiceRegolaSeverità
DUP_HOSTBlocco Host duplicatowarning
MISSING_IDENTITYIdentityFile non trovatoerror
WILDCARD_ORDEROrdine dei wildcard Hostwarning
WEAK_ALGOAlgoritmo debolewarning
DUP_DIRECTIVEDirettiva duplicatawarning
INSECURE_OPTOpzione non sicurawarning
UNSAFE_CTRL_PATHControlPath non sicurowarning
INCLUDE_CYCLECiclo Includeerror
INCLUDE_READInclude non leggibileerror
INCLUDE_GLOBPattern Include non validoerror
INCLUDE_NO_MATCHInclude non corrisponde a nessun fileinfo

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

Categorie