Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sshconfig-lint — 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. | Kitploit
Strumenti/GitHubGitHub/noah4ever/sshconfig-lint
Utilità GenericheAnalisi StaticaAnalisi del CodiceAudit di ConfigurazioneSicurezza di ReteDevSecOps
GitHubnoah4ever/sshconfig-lint

sshconfig-lint

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.

Vedi Repository
165 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

sshconfig-lint

Esegui il lint del tuo ~/.ssh/config per errori comuni.

Controlla la presenza di blocchi host duplicati, file identity mancanti, problemi di ordinamento dei wildcard, algoritmi deboli, direttive duplicate e altro. Supporta le direttive Include con rilevamento dei cicli.

https://github.com/user-attachments/assets/4d995679-baed-4f20-9ba8-8f3ec94c64fd

Installazione

Installazione rapida (Linux / macOS)

root@kitploit:~
curl -fsSL https://raw.githubusercontent.com/Noah4ever/sshconfig-lint/main/install.sh | bash

Imposta VERSION=v0.1.0 o INSTALL_DIR=~/.local/bin per sovrascrivere i valori predefiniti.

macOS (Homebrew)

root@kitploit:~
brew tap Noah4ever/tap
brew install sshconfig-lint

opzionale: untap Noah4ever/tap per rimuovere il tap e mantenere pulita la lista dei tap

Cargo

root@kitploit:~
cargo install sshconfig-lint

AUR

sshconfig-lint-bin - binari precompilati

root@kitploit:~
yay -S sshconfig-lint-bin
root@kitploit:~
paru -S sshconfig-lint-bin

Binari precompilati

Scarica un binario dalla pagina delle release.

Utilizzo

root@kitploit:~
# lint the default ~/.ssh/config
sshconfig-lint

# lint a specific file
sshconfig-lint --config /path/to/config

# json output
sshconfig-lint --format json

# treat warnings as errors (useful in CI)
sshconfig-lint --strict

# skip Include resolution
sshconfig-lint --no-includes

Output di esempio

root@kitploit:~
line 4: [warning] WILDCARD_ORDER (wildcard-host-order) Host 'github.com' appears after 'Host *' (line 1); it will never match because Host * already matched (hint: move Host * to the end of the file)
line 7: [warning] DUP_HOST (duplicate-host) duplicate Host block 'github.com' (first seen at line 4) (hint: remove one of the duplicate Host blocks)
line 3: [error] MISSING_IDENTITY (identity-file-exists) IdentityFile not found: ~/.ssh/id_missing (hint: check the path or remove the directive)

L'output è ordinato per file e numero di riga, quindi è deterministico tra le esecuzioni (stabile per diff e snapshot CI).

Gli errori sono rossi, gli avvisi gialli, le informazioni ciano. I colori vengono disattivati automaticamente quando stdout non è un terminale o quando NO_COLOR è impostato.

Codici di uscita

CodiceSignificato
0Pulito, nessun errore trovato
1Almeno un riscontro di livello errore (o avviso con --strict)
2File di configurazione non trovato

Regole

Ogni riscontro ha un codice stabile che puoi cercare con grep o usare negli script.

I riscontri includono un suggerimento quando possibile, ad esempio «sposta Host * alla fine del file».

Cosa gestisce

  • Pattern host multipli (Host github.com gitlab.com)
  • Pattern include multipli (Include conf.d/*.conf extra.conf)
  • Commenti inline (IdentityFile ~/.ssh/id # my key)
  • Valori tra virgolette (ProxyCommand "ssh -W %h:%p bastion")
  • Risoluzione Include con rilevamento dei cicli

Sviluppo

root@kitploit:~
cargo test          # run all tests
cargo test --lib    # unit tests only
cargo clippy        # lint
cargo fmt --check   # formatting

Struttura del progetto

root@kitploit:~
src/
  main.rs        CLI
  lib.rs         Public API (lint_file, lint_str)
  model.rs       AST types
  lexer.rs       Tokenizer
  parser.rs      Builds config AST from tokens
  resolve.rs     Include expansion + cycle detection
  report.rs      Text and JSON formatters
  rules/
    mod.rs       Rule trait and runner
    basic.rs     Built-in rules
tests/
  fixtures/      Sample config files
  cli.rs         CLI integration tests
  integration.rs Fixture-based tests

Aggiungere una regola

  1. Implementa il trait Rule in src/rules/basic.rs
  2. Registralo in run_all() in src/rules/mod.rs
  3. Scrivi prima i test, poi falli passare

Vedi CONTRIBUTING.md per maggiori dettagli.

Licenza

MIT

Scarica lo strumento
CodiceRegolaSeveritàDescrizione
DUP_HOSTduplicate-hostavvisoDue blocchi Host con lo stesso pattern
MISSING_IDENTITYidentity-file-existserroreIl percorso di IdentityFile non esiste
WILDCARD_ORDERwildcard-host-orderavvisoHost * appare prima di pattern specifici
WEAK_ALGOdeprecated-weak-algorithmsavvisoAlgoritmo debole o deprecato (3des-cbc, arcfour, hmac-md5, ssh-dss, ecc.)
DUP_DIRECTIVEduplicate-directivesavvisoLa stessa direttiva ripetuta in un unico scope (solo il primo valore ha effetto)
INSECURE_OPTinsecure-optionavvisoImpostazione pericolosa come StrictHostKeyChecking no o ForwardAgent yes su Host *
UNSAFE_CTRL_PATHunsafe-control-pathavvisoControlPath senza %h, %p, %r (o %C) — le connessioni possono condividere una socket
INCLUDE_CYCLEinclude-cycleerroreCatena Include circolare
INCLUDE_READinclude-readerroreImpossibile leggere il file incluso
INCLUDE_GLOBinclude-globerrorePattern glob Include non valido
INCLUDE_NO_MATCHinclude-no-matchinfoNessun file corrisponde al pattern Include