अपडेट पर वापस जाएँ
New releaseSep 3, 2026

sshconfig-lint v0.5.0

Rule-based linter for OpenSSH client config files जो डुप्लिकेट होस्ट, गुम पहचान फ़ाइलें, कमजोर एल्गोरिदम, वाइल्डकार्ड ऑर्डरिंग समस्याएं, और खतरनाक सेटिंग्स का पता लगाता है, JSON आउटपुट और CI-अनुकूल एग्जिट कोड के साथ।

साझा करें

sshconfig-lint

Tests crates.io License: MIT

एक इंजन, हर उस जगह के लिए जहाँ आपका 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

इंस्टॉल

Homebrew

brew tap Noah4ever/tap
brew install sshconfig-lint

Cargo

cargo install sshconfig-lint

Arch Linux

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 सेट करें।

GitHub Actions

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

Pre-Commit

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_IDENTITYIdentityFile नहीं मिलात्रुटि
WILDCARD_ORDERHost वाइल्डकार्ड क्रमचेतावनी
WEAK_ALGOकमज़ोर एल्गोरिदमचेतावनी
DUP_DIRECTIVEडुप्लिकेट निर्देशचेतावनी
INSECURE_OPTअसुरक्षित विकल्पचेतावनी
UNSAFE_CTRL_PATHअसुरक्षित ControlPathचेतावनी
INCLUDE_CYCLEInclude चक्रत्रुटि
INCLUDE_READInclude पढ़ा नहीं जा सकात्रुटि
INCLUDE_GLOBअमान्य Include पैटर्नत्रुटि
INCLUDE_NO_MATCHInclude किसी फ़ाइल से मेल नहीं खाताजानकारी

नियम मार्गदर्शिकाएँ सटीक टूटा हुआ टुकड़ा, एक सुधारा गया कॉन्फ़िग, यह क्यों मायने रखता है, और OpenSSH के साथ परिणाम कैसे सत्यापित करें दिखाती हैं।

विकास

Rust 1.85 या नया आवश्यक है।

cargo test --all
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt -- --check

CONTRIBUTING.md, सार्वजनिक रोडमैप, और सुरक्षा नीति देखें।

लाइसेंस

MIT

श्रेणियाँ