
Rule-based linter for OpenSSH client config files जो डुप्लिकेट होस्ट, गुम पहचान फ़ाइलें, कमजोर एल्गोरिदम, वाइल्डकार्ड ऑर्डरिंग समस्याएं, और खतरनाक सेटिंग्स का पता लगाता है, JSON आउटपुट और CI-अनुकूल एग्जिट कोड के साथ।
अपने ~/.ssh/config में सामान्य गलतियों की जाँच करें।
डुप्लिकेट होस्ट ब्लॉक, गुम पहचान फ़ाइलें, वाइल्डकार्ड क्रम समस्याएँ, कमज़ोर एल्गोरिदम, डुप्लिकेट निर्देश और अधिक की जाँच करता है। चक्र पहचान के साथ Include निर्देशों का समर्थन करता है।
https://github.com/user-attachments/assets/4d995679-baed-4f20-9ba8-8f3ec94c64fd
curl -fsSL https://raw.githubusercontent.com/Noah4ever/sshconfig-lint/main/install.sh | bash
डिफ़ॉल्ट को ओवरराइड करने के लिए VERSION=v0.1.0 या INSTALL_DIR=~/.local/bin सेट करें।
brew tap Noah4ever/tap
brew install sshconfig-lint
वैकल्पिक: untap Noah4ever/tap टैप सूची को साफ रखने के लिए टैप हटा देता है।
cargo install sshconfig-lint
sshconfig-lint-bin - पूर्व-निर्मित बाइनरी
yay -S sshconfig-lint-bin
paru -S sshconfig-lint-bin
रिलीज़ पेज से एक बाइनरी प्राप्त करें।
# डिफ़ॉल्ट ~/.ssh/config की जाँच करें
sshconfig-lint
# किसी विशिष्ट फ़ाइल की जाँच करें
sshconfig-lint --config /path/to/config
# JSON आउटपुट
sshconfig-lint --format json
# चेतावनियों को त्रुटि मानें (CI में उपयोगी)
sshconfig-lint --strict
# Include समाधान छोड़ें
sshconfig-lint --no-includes
line 4: [चेतावनी] WILDCARD_ORDER (wildcard-host-order) Host 'github.com' 'Host *' (पंक्ति 1) के बाद आता है; यह कभी मेल नहीं खाएगा क्योंकि Host * पहले ही मेल खा चुका है (संकेत: Host * को फ़ाइल के अंत में ले जाएँ)
line 7: [चेतावनी] DUP_HOST (duplicate-host) डुप्लिकेट Host ब्लॉक 'github.com' (पहली बार पंक्ति 4 पर देखा गया) (संकेत: डुप्लिकेट Host ब्लॉक में से एक हटाएँ)
line 3: [त्रुटि] MISSING_IDENTITY (identity-file-exists) IdentityFile नहीं मिली: ~/.ssh/id_missing (संकेत: पथ जाँचें या निर्देश हटाएँ)
आउटपुट फ़ाइल और पंक्ति संख्या के अनुसार क्रमबद्ध है, जिससे यह रनों के बीच नियतात्मक होता है (CI अंतर और स्नैपशॉट के लिए स्थिर)।
त्रुटियाँ लाल, चेतावनियाँ पीली, जानकारी सियान होती है। रंग स्वचालित रूप से अक्षम हो जाते हैं जब stdout टर्मिनल नहीं है या NO_COLOR सेट है।
| कोड | अर्थ |
|---|---|
| 0 | साफ, कोई त्रुटि नहीं मिली |
| 1 | कम से कम एक त्रुटि-स्तरीय खोज (या --strict के साथ चेतावनी) |
| 2 | कॉन्फ़िग फ़ाइल नहीं मिली |
प्रत्येक खोज का एक स्थिर कोड होता है जिसे आप स्क्रिप्ट में grep या मैच कर सकते हैं।
खोजों में जहाँ संभव हो एक संकेत शामिल होता है, जैसे "Host * को फ़ाइल के अंत में ले जाएँ"।
Host github.com gitlab.com)Include conf.d/*.conf extra.conf)IdentityFile ~/.ssh/id # my key)ProxyCommand "ssh -W %h:%p bastion")cargo test # सभी परीक्षण चलाएँ
cargo test --lib # केवल यूनिट परीक्षण
cargo clippy # लिंट
cargo fmt --check # फ़ॉर्मेटिंग
src/
main.rs CLI
lib.rs सार्वजनिक API (lint_file, lint_str)
model.rs AST प्रकार
lexer.rs टोकनाइज़र
parser.rs टोकन से कॉन्फ़िग AST बनाता है
resolve.rs Include विस्तार + चक्र पहचान
report.rs टेक्स्ट और JSON फॉर्मेटर
rules/
mod.rs नियम ट्रेट और रनर
basic.rs अंतर्निहित नियम
tests/
fixtures/ नमूना कॉन्फ़िग फ़ाइलें
cli.rs CLI एकीकरण परीक्षण
integration.rs फिक्स्चर-आधारित परीक्षण
src/rules/basic.rs में Rule ट्रेट को लागू करेंsrc/rules/mod.rs में run_all() में इसे पंजीकृत करेंअधिक विवरण के लिए CONTRIBUTING.md देखें।
MIT
| कोड | नियम | गंभीरता | विवरण |
|---|
DUP_HOST | duplicate-host | चेतावनी | एक ही पैटर्न वाले दो Host ब्लॉक |
MISSING_IDENTITY | identity-file-exists | त्रुटि | IdentityFile पथ मौजूद नहीं है |
WILDCARD_ORDER | wildcard-host-order | चेतावनी | विशिष्ट पैटर्न से पहले Host * आता है |
WEAK_ALGO | deprecated-weak-algorithms | चेतावनी | कमज़ोर या अप्रचलित एल्गोरिदम (3des-cbc, arcfour, hmac-md5, ssh-dss, आदि) |
DUP_DIRECTIVE | duplicate-directives | चेतावनी | एक ही दायरे में एक ही निर्देश दोहराया गया (केवल पहला मान प्रभावी होता है) |
INSECURE_OPT | insecure-option | चेतावनी | खतरनाक सेटिंग जैसे StrictHostKeyChecking no या Host * पर ForwardAgent yes |
UNSAFE_CTRL_PATH | unsafe-control-path | चेतावनी | ControlPath में %h, %p, %r (या %C) गायब है — कनेक्शन एक ही सॉकेट साझा कर सकते हैं |
INCLUDE_CYCLE | include-cycle | त्रुटि | चक्रीय Include श्रृंखला |
INCLUDE_READ | include-read | त्रुटि | शामिल फ़ाइल पढ़ी नहीं जा सकती |
INCLUDE_GLOB | include-glob | त्रुटि | अमान्य Include ग्लोब पैटर्न |
INCLUDE_NO_MATCH | include-no-match | जानकारी | Include पैटर्न किसी फ़ाइल से मेल नहीं खाया |