Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
sshconfig-lint — Regelbasierter Linter für OpenSSH-Client-Konfigurationsdateien, der doppelte Hosts, fehlende Identitätsdateien, schwache Algorithmen, Probleme mit der Wildcard-Reihenfolge und gefährliche Einstellungen erkennt und eine JSON-Ausgabe sowie CI-freundliche Exit-Codes bietet. | Kitploit
Tools/GitHubGitHub/noah4ever/sshconfig-lint
Allgemeine DienstprogrammeStatische AnalyseCode-AnalyseKonfigurationsprüfungNetzwerksicherheitDevSecOps
GitHubnoah4ever/sshconfig-lint

sshconfig-lint

Regelbasierter Linter für OpenSSH-Client-Konfigurationsdateien, der doppelte Hosts, fehlende Identitätsdateien, schwache Algorithmen, Probleme mit der Wildcard-Reihenfolge und gefährliche Einstellungen erkennt und eine JSON-Ausgabe sowie CI-freundliche Exit-Codes bietet.

Repository anzeigen
16vor 5 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

sshconfig-lint

Lint deine ~/.ssh/config auf häufige Fehler.

Prüft auf doppelte Host-Blöcke, fehlende Identitätsdateien, Probleme mit der Wildcard-Reihenfolge, schwache Algorithmen, doppelte Direktiven und mehr. Unterstützt Include-Direktiven mit Zykluserkennung.

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

Installation

Schnellinstallation (Linux / macOS)

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

Setze VERSION=v0.1.0 oder INSTALL_DIR=~/.local/bin, um die Standardwerte zu überschreiben.

macOS (Homebrew)

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

optionaler Befehl untap Noah4ever/tap zum Entfernen des Taps und um die Tap-Liste sauber zu halten.

Cargo

root@kitploit:~
cargo install sshconfig-lint

AUR

sshconfig-lint-bin - vorgefertigte Binärdateien

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

Vorgefertigte Binärdateien

Hole dir eine Binärdatei von der Releases-Seite.

Verwendung

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

Beispielausgabe

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)

Die Ausgabe ist nach Datei und Zeilennummer sortiert, sodass sie über verschiedene Läufe hinweg deterministisch ist (stabil für CI-Diffs und Snapshots).

Fehler sind rot, Warnungen gelb, Informationen cyan. Farben werden automatisch deaktiviert, wenn stdout kein Terminal ist oder wenn NO_COLOR gesetzt ist.

Exit-Codes

CodeBedeutung
0Sauber, keine Fehler gefunden
1Mindestens ein Fehler-Level-Fund (oder Warnung mit --strict)
2Konfigurationsdatei nicht gefunden

Regeln

Jeder Fund hat einen stabilen Code, nach dem Sie in Skripten greppen oder suchen können.

Funde enthalten wenn möglich einen Hinweis, z. B. „verschiebe Host * an das Ende der Datei“.

Was es behandelt

  • Mehrere Host-Muster (Host github.com gitlab.com)
  • Mehrere Include-Muster (Include conf.d/*.conf extra.conf)
  • Inline-Kommentare (IdentityFile ~/.ssh/id # my key)
  • Angeführte Werte (ProxyCommand "ssh -W %h:%p bastion")
  • Include-Auflösung mit Zykluserkennung

Entwicklung

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

Projektstruktur

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

Hinzufügen einer Regel

  1. Implementiere das Rule-Trait in src/rules/basic.rs
  2. Registriere es in run_all() in src/rules/mod.rs
  3. Schreibe zuerst Tests, dann lass sie bestehen

Siehe CONTRIBUTING.md für weitere Details.

Lizenz

MIT

Tool herunterladen
CodeRegelSchweregradBeschreibung
DUP_HOSTduplicate-hostwarningZwei Host-Blöcke mit demselben Muster
MISSING_IDENTITYidentity-file-existserrorIdentityFile-Pfad existiert nicht
WILDCARD_ORDERwildcard-host-orderwarningHost * erscheint vor spezifischen Mustern
WEAK_ALGOdeprecated-weak-algorithmswarningSchwacher oder veralteter Algorithmus (3des-cbc, arcfour, hmac-md5, ssh-dss, etc.)
DUP_DIRECTIVEduplicate-directiveswarningGleiche Direktive in einem Gültigkeitsbereich wiederholt (nur der erste Wert wirkt)
INSECURE_OPTinsecure-optionwarningGefährliche Einstellung wie StrictHostKeyChecking no oder ForwardAgent yes bei Host *
UNSAFE_CTRL_PATHunsafe-control-pathwarningControlPath fehlt %h, %p, %r (oder %C) — Verbindungen könnten einen Socket teilen
INCLUDE_CYCLEinclude-cycleerrorZirkuläre Include-Kette
INCLUDE_READinclude-readerrorEingebundene Datei kann nicht gelesen werden
INCLUDE_GLOBinclude-globerrorUngültiges Include-Glob-Muster
INCLUDE_NO_MATCHinclude-no-matchinfoInclude-Muster hat keine Dateien gefunden