
Rule-based linter for OpenSSH client config files जो डुप्लिकेट होस्ट, गुम पहचान फ़ाइलें, कमजोर एल्गोरिदम, वाइल्डकार्ड ऑर्डरिंग समस्याएं, और खतरनाक सेटिंग्स का पता लगाता है, JSON आउटपुट और CI-अनुकूल एग्जिट कोड के साथ।
एक इंजन, हर उस जगह के लिए जहाँ आपका SSH कॉन्फ़िग बदलता है।
sshconfig-lint OpenSSH क्लाइंट कॉन्फ़िग्स में सिमेंटिक गलतियाँ ढूँढता है: डुप्लिकेट होस्ट, टूटे हुए identity पथ, असुरक्षित विकल्प, कमज़ोर एल्गोरिदम, वाइल्डकार्ड क्रम, और उलझी हुई Include श्रृंखलाएँ। समान नियम कोड का उपयोग स्थानीय रूप से, Git हुक्स, GitHub Actions, और एडिटर्स में करें।
निजी ब्राउज़र प्लेग्राउंड आज़माएँ · इंटरैक्टिव उदाहरणों से सीखें · हर नियम पढ़ें
ब्राउज़र चेकर आपके डिवाइस पर चलता है। कॉन्फ़िग सामग्री अपलोड नहीं की जाती और कोई टेलीमेट्री एकत्र नहीं की जाती।
# ~/.ssh/config जाँचें
sshconfig-lint
# एक या अधिक रिपॉजिटरी कॉन्फ़िग्स जाँचें
sshconfig-lint .ssh/config infrastructure/ssh_config
# चेतावनियों और त्रुटियों पर विफल हों
sshconfig-lint .ssh/config --strict
brew tap Noah4ever/tap
brew install sshconfig-lint
cargo install sshconfig-lint
yay -S sshconfig-lint-bin
रिलीज़ पेज Linux, macOS, और Windows के लिए सत्यापित बाइनरी प्रदान करता है। सुविधाजनक इंस्टॉलर इंस्टॉल करने से पहले रिलीज़ चेकसम सत्यापित करता है:
curl -fsSL https://raw.githubusercontent.com/Noah4ever/sshconfig-lint/main/install.sh | bash
डिफ़ॉल्ट ओवरराइड करने के लिए VERSION=v0.5.0 या INSTALL_DIR=~/.local/bin सेट करें।
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
निष्कर्ष सटीक फ़ाइल और लाइन पर एनोटेशन के रूप में दिखाई देते हैं। Action अपने टैग से मेल खाती रिलीज़ डाउनलोड करता है और निष्पादन से पहले SHA256SUMS सत्यापित करता है।
GitHub Code Scanning सक्षम रिपॉजिटरी के लिए, SARIF अलग से अपलोड किया जा सकता है:
- 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
जब चेतावनियों को कमिट ब्लॉक नहीं करना चाहिए तो id: sshconfig-lint का उपयोग करें। जब कॉन्फ़िग्स किसी अन्य नामकरण परंपरा का उपयोग करते हैं तो अपने प्रोजेक्ट में files: ओवरराइड करें।
Marketplace से VS Code एक्सटेंशन इंस्टॉल करें या चलाएँ:
code --install-extension NoahThiering.sshconfig-lint
एक्सटेंशन sshconfig-lint lsp शुरू करता है, एक बार मेल खाती सत्यापित बाइनरी डाउनलोड करता है, और फिर ऑफ़लाइन काम करता है। यह .ssh/config, ssh_config, और chezmoi के dot_ssh/config को पहचानता है। कोई टेलीमेट्री एकत्र नहीं की जाती। इसका स्रोत editors/vscode में उपलब्ध है।
LSP समर्थन वाला कोई भी एडिटर शुरू कर सकता है:
sshconfig-lint lsp
v0.5 भाषा सर्वर खोलने, बदलने और सहेजने पर पूर्ण-लाइन डायग्नोस्टिक्स प्रकाशित करता है। Untitled बफ़र्स केवल सामग्री-आधारित नियम चलाते हैं; सहेजी गई फ़ाइलें अतिरिक्त रूप से Include और फ़ाइलसिस्टम पथों को हल करती हैं।
sshconfig-lint --format text
sshconfig-lint --format json
sshconfig-lint --format github
sshconfig-lint --format sarif
JSON निष्कर्षों में severity, code, rule, line, file, message, hint, और documentation होते हैं। नियम कोड और एग्ज़िट कोड स्थिर स्वचालन इंटरफ़ेस हैं।
| एग्ज़िट | अर्थ |
|---|---|
0 | कोई त्रुटि-स्तर का निष्कर्ष नहीं, और --strict के साथ कोई चेतावनी नहीं |
1 | कम से कम एक ब्लॉकिंग निष्कर्ष |
2 | कम से कम एक अनुरोधित कॉन्फ़िग पढ़ा नहीं जा सका |
| कोड | नियम | गंभीरता |
|---|---|---|
DUP_HOST | डुप्लिकेट Host ब्लॉक | चेतावनी |
MISSING_IDENTITY | IdentityFile नहीं मिला | त्रुटि |
WILDCARD_ORDER | Host वाइल्डकार्ड क्रम | चेतावनी |
WEAK_ALGO | कमज़ोर एल्गोरिदम | चेतावनी |
DUP_DIRECTIVE | डुप्लिकेट निर्देश | चेतावनी |
INSECURE_OPT | असुरक्षित विकल्प | चेतावनी |
UNSAFE_CTRL_PATH | असुरक्षित ControlPath | चेतावनी |
INCLUDE_CYCLE | Include चक्र | त्रुटि |
INCLUDE_READ | Include पढ़ा नहीं जा सका | त्रुटि |
INCLUDE_GLOB | अमान्य Include पैटर्न | त्रुटि |
INCLUDE_NO_MATCH | Include किसी फ़ाइल से मेल नहीं खाता | जानकारी |
नियम मार्गदर्शिकाएँ सटीक टूटा हुआ टुकड़ा, एक सुधारा गया कॉन्फ़िग, यह क्यों मायने रखता है, और OpenSSH के साथ परिणाम कैसे सत्यापित करें दिखाती हैं।
Rust 1.85 या नया आवश्यक है।
cargo test --all
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt -- --check
CONTRIBUTING.md, सार्वजनिक रोडमैप, और सुरक्षा नीति देखें।
MIT