
Linter basé sur des règles pour les fichiers de configuration du client OpenSSH qui détecte les hôtes en double, les fichiers d'identité manquants, les algorithmes faibles, les problèmes d'ordre des jokers et les paramètres dangereux avec sortie JSON et codes de sortie adaptés à CI.
Un seul moteur pour chaque endroit où votre configuration SSH change.
sshconfig-lint détecte les erreurs sémantiques dans les configurations client OpenSSH : hôtes en double, chemins IdentityFile cassés, options dangereuses, algorithmes faibles, ordre des wildcards et chaînes Include emmêlées. Utilisez les mêmes codes de règle localement, dans les hooks Git, GitHub Actions et les éditeurs.
Essayez le playground navigateur privé · Apprenez avec des exemples interactifs · Lisez chaque règle
Le vérificateur navigateur s'exécute sur votre appareil. Le contenu des configurations n'est pas téléchargé et aucune télémétrie n'est collectée.
# vérifier ~/.ssh/config
sshconfig-lint
# vérifier une ou plusieurs configurations de dépôt
sshconfig-lint .ssh/config infrastructure/ssh_config
# échouer sur les avertissements et les erreurs
sshconfig-lint .ssh/config --strict
brew tap Noah4ever/tap
brew install sshconfig-lint
cargo install sshconfig-lint
yay -S sshconfig-lint-bin
La page des versions fournit des binaires vérifiés pour Linux, macOS et Windows. L'installateur pratique vérifie la somme de contrôle de la version avant l'installation :
curl -fsSL https://raw.githubusercontent.com/Noah4ever/sshconfig-lint/main/install.sh | bash
Définissez VERSION=v0.5.0 ou INSTALL_DIR=~/.local/bin pour remplacer les valeurs par défaut.
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
Les résultats apparaissent sous forme d'annotations sur le fichier et la ligne exacts. L'Action télécharge la version correspondant à son tag et vérifie SHA256SUMS avant l'exécution.
Pour les dépôts avec GitHub Code Scanning activé, SARIF peut être téléchargé séparément :
- run: sshconfig-lint .ssh/config --format sarif > sshconfig-lint.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: sshconfig-lint.sarif
repos:
- repo: https://github.com/Noah4ever/sshconfig-lint
rev: v0.5.0
hooks:
- id: sshconfig-lint-strict
Utilisez id: sshconfig-lint lorsque les avertissements ne doivent pas bloquer un commit. Remplacez files: dans votre projet lorsque les configurations utilisent une autre convention de nommage.
Installez l'extension VS Code depuis le Marketplace ou exécutez :
code --install-extension NoahThiering.sshconfig-lint
L'extension démarre sshconfig-lint lsp, télécharge une fois un binaire vérifié correspondant, puis fonctionne hors ligne. Elle reconnaît .ssh/config, ssh_config et dot_ssh/config de chezmoi. Aucune télémétrie n'est collectée. Son code source est disponible dans editors/vscode.
Tout éditeur avec support LSP peut démarrer :
sshconfig-lint lsp
Le serveur de langage v0.5 publie des diagnostics sur toute la ligne à l'ouverture, au changement et à l'enregistrement. Les buffers sans titre exécutent des règles basées uniquement sur le contenu ; les fichiers enregistrés résolvent en plus Include et les chemins du système de fichiers.
sshconfig-lint --format text
sshconfig-lint --format json
sshconfig-lint --format github
sshconfig-lint --format sarif
Les résultats JSON contiennent severity, code, rule, line, file, message, hint et documentation. Les codes de règle et les codes de sortie sont des interfaces d'automatisation stables.
| Exit | Signification |
|---|---|
0 | Aucun résultat de niveau erreur, et aucun avertissement avec --strict |
1 | Au moins un résultat bloquant |
2 | Au moins une configuration demandée n'a pas pu être lue |
| Code | Règle | Sévérité |
|---|---|---|
DUP_HOST | Bloc Host en double | avertissement |
MISSING_IDENTITY | IdentityFile introuvable | erreur |
WILDCARD_ORDER | Ordre des wildcards Host | avertissement |
WEAK_ALGO | Algorithme faible | avertissement |
DUP_DIRECTIVE | Directive en double | avertissement |
INSECURE_OPT | Option non sécurisée | avertissement |
UNSAFE_CTRL_PATH | ControlPath non sécurisé | avertissement |
INCLUDE_CYCLE | Cycle Include | erreur |
INCLUDE_READ | Include illisible | erreur |
INCLUDE_GLOB | Modèle Include invalide | erreur |
INCLUDE_NO_MATCH | Include ne correspond à aucun fichier | info |
Les guides de règles montrent le fragment cassé exact, une configuration corrigée, pourquoi cela compte et comment vérifier le résultat avec OpenSSH.
Nécessite Rust 1.85 ou plus récent.
cargo test --all
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt -- --check
Voir CONTRIBUTING.md, la feuille de route publique et la politique de sécurité.
MIT