العودة إلى التحديثات
New releaseSep 3, 2026

sshconfig-lint v0.5.0

مدقق قائم على القواعد لملفات تكوين عميل OpenSSH يكتشف الـhosts المكررة، ملفات الهوية المفقودة، الخوارزميات الضعيفة، مشاكل ترتيب wildcard، والإعدادات الخطرة مع إخراج JSON ورموز خروج مناسبة لـ CI.

مشاركة

sshconfig-lint

Tests crates.io License: MIT

محرك واحد لكل مكان تتغير فيه إعدادات 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_IDENTITYIdentityFile غير موجودخطأ
WILDCARD_ORDERترتيب أحرف البدل في المضيفتحذير
WEAK_ALGOخوارزمية ضعيفةتحذير
DUP_DIRECTIVEتوجيه مكررتحذير
INSECURE_OPTخيار غير آمنتحذير
UNSAFE_CTRL_PATHControlPath غير آمنتحذير
INCLUDE_CYCLEحلقة Includeخطأ
INCLUDE_READتعذر قراءة Includeخطأ
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

الفئات