
Rule-based linter for OpenSSH client config files जो डुप्लिकेट होस्ट, गुम पहचान फ़ाइलें, कमजोर एल्गोरिदम, वाइल्डकार्ड ऑर्डरिंग समस्याएं, और खतरनाक सेटिंग्स का पता लगाता है, JSON आउटपुट और CI-अनुकूल एग्जिट कोड के साथ।
हर उस जगह के लिए एक इंजन जहाँ आपका SSH कॉन्फ़िग बदलता है।
sshconfig-lint OpenSSH क्लाइंट कॉन्फ़िग्स में सिमेंटिक गलतियाँ ढूँढता है: डुप्लिकेट होस्ट, टूटे हुए identity पाथ, असुरक्षित ऑप्शन, कमज़ोर एल्गोरिदम, वाइल्डकार्ड ऑर्डरिंग, और उलझी हुई Include चेन। एक ही रूल कोड को लोकली, Git hooks, GitHub Actions, और एडिटर्स में इस्तेमाल करें।
प्राइवेट ब्राउज़र प्लेग्राउंड आज़माएँ · इंटरैक्टिव उदाहरणों के साथ सीखें · हर रूल पढ़ें
ब्राउज़र चेकर आपके डिवाइस पर चलता है। कॉन्फ़िग की सामग्री अपलोड नहीं की जाती और कोई टेलीमेट्री एकत्र नहीं की जाती।
# check ~/.ssh/config
sshconfig-lint
# check one or more repository configs
sshconfig-lint .ssh/config infrastructure/ssh_config
# fail on warnings and errors
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 सेट करें।
आधिकारिक Action GitHub Marketplace में उपलब्ध है।
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: v1.0.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 में उपलब्ध है।
परीक्षित editors/neovim उदाहरण Neovim के अंतर्निहित
LSP क्लाइंट का उपयोग करता है। इसके छोटे Lua मॉड्यूल को अपने कॉन्फ़िगरेशन में कॉपी करें और इसे इस तरह शुरू करें:
require("sshconfig_lint").setup()
यह VS Code के समान sshconfig-lint lsp सर्वर का उपयोग करता है और कस्टम
बाइनरी पाथ का समर्थन करता है।
LSP समर्थन वाला कोई भी एडिटर इसे शुरू कर सकता है:
sshconfig-lint lsp
v0.5 लैंग्वेज सर्वर खोलने, बदलने, और सहेजने पर पूरी-लाइन डायग्नोस्टिक्स प्रकाशित करता है। बिना शीर्षक वाले बफ़र्स केवल-सामग्री नियम चलाते हैं; सहेजी गई फ़ाइलें अतिरिक्त रूप से Include और फ़ाइलसिस्टम पाथ को हल करती हैं। नेस्टेड Includes से मिले निष्कर्ष शामिल की गई फ़ाइल से जोड़े जाते हैं और रूट दस्तावेज़ के साथ साफ़ हो जाते हैं।
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 शामिल होते हैं। रूल कोड और एग्ज़िट कोड स्थिर ऑटोमेशन इंटरफ़ेस हैं।
| Exit | Meaning |
|---|---|
0 | कोई error-स्तरीय निष्कर्ष नहीं, और --strict के साथ कोई चेतावनी नहीं |
1 | कम से कम एक ब्लॉकिंग निष्कर्ष |
2 | कम से कम एक अनुरोधित कॉन्फ़िग पढ़ा नहीं जा सका |