
sshconfig-lint v0.5.0
مدقق قائم على القواعد لملفات تكوين عميل OpenSSH يكتشف الـhosts المكررة، ملفات الهوية المفقودة، الخوارزميات الضعيفة، مشاكل ترتيب wildcard، والإعدادات الخطرة مع إخراج JSON ورموز خروج مناسبة لـ CI.
sshconfig-lint
محرك واحد لكل مكان تتغير فيه إعدادات SSH الخاصة بك.
يجد sshconfig-lint أخطاء دلالية في إعدادات عميل OpenSSH: المضيفات المكررة، مسارات الهوية المعطلة، الخيارات غير الآمنة، الخوارزميات الضعيفة، ترتيب أحرف البدل، وسلاسل 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
تظهر النتائج كتعليقات توضيحية على الملف والسطر المحددين. يقوم الإجراء بتنزيل الإصدار المطابق لوسمه والتحقق من 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: في مشروعك عندما تستخدم الإعدادات اصطلاح تسمية آخر.
المحررات
ثبّت إضافة VS Code من السوق أو شغّل:
code --install-extension NoahThiering.sshconfig-lint
تبدأ الإضافة sshconfig-lint lsp، وتنزّل ملفًا ثنائيًا موثقًا مطابقًا مرة واحدة، ثم تعمل دون اتصال. تتعرف على .ssh/config وssh_config وdot_ssh/config الخاص بـ chezmoi. لا يتم جمع أي بيانات تتبع. مصدرها متاح في editors/vscode.
يمكن لأي محرر يدعم LSP أن يبدأ:
sshconfig-lint lsp
ينشر خادم اللغة v0.5 تشخيصات كاملة الأسطر عند الفتح والتغيير والحفظ. تعمل المخازن المؤقتة غير المسماة بقواعد المحتوى فقط؛ بينما تحل الملفات المحفوظة أيضًا 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 | كتلة مضيف مكررة | تحذير |
MISSING_IDENTITY | IdentityFile غير موجود | خطأ |
WILDCARD_ORDER | ترتيب أحرف البدل في المضيف | تحذير |
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