
🔐 أداة سطر أوامر خفيفة الوزن مصممة لمزامنة مفاتيح SSH العامة من عناوين URL البعيدة إلى ملفات authorized_keys المحلية
قم بمزامنة مفاتيح SSH العامة تلقائيًا من عناوين URL البعيدة إلى خوادمك
إدارة وصول SSH عبر خوادم متعددة أمر مرهق:
authorized_keys على كل خادمAuthKeySync هو أداة سطر أوامر خفيفة تقوم بجلب مفاتيح SSH العامة من عناوين URL (GitHub، GitLab، أو واجهة برمجة التطبيقات الخاصة بك) ومزامنتها إلى خوادمك. إنها آمنة وموثوقة ومصممة للأتمتة.
# /etc/authkeysync/config.yaml
users:
- username: "deploy"
sources:
- url: "https://github.com/your-username.keys"
- url: "https://github.com/another-username.keys"
شغّل authkeysync (يدويًا أو عبر cron)، وسيتم تحديث authorized_keys لديك. هذا كل شيء.
احصل على أحدث ملف تنفيذي من صفحة الإصدارات:
# Linux AMD64
curl -Lo authkeysync https://github.com/eduardolat/authkeysync/releases/latest/download/authkeysync-linux-amd64
chmod +x authkeysync
sudo mv authkeysync /usr/local/bin/
أنشئ ملف إعداد في /etc/authkeysync/config.yaml:
policy:
backup_enabled: true # Create backups before changes (default: true)
backup_retention_count: 10 # Number of backups to keep (default: 10)
preserve_local_keys: true # Keep keys not in remote sources (default: true)
users:
- username: "root"
sources:
- url: "https://github.com/your-username.keys"
# Test first with dry-run
sudo authkeysync --dry-run
# Apply changes
sudo authkeysync
قم بإعداد وظيفة cron أو مؤقّت systemd للتشغيل الدوري:
# Every 5 minutes (use --quiet to reduce log noise in cron)
echo "*/5 * * * * root /usr/local/bin/authkeysync --quiet" | sudo tee /etc/cron.d/authkeysync
| الخيار | النوع |
|---|
policy:
backup_enabled: true
backup_retention_count: 10
preserve_local_keys: true
users:
- username: "deploy"
sources:
# Simple GitHub keys
- url: "https://github.com/your-username.keys"
# Private API with authentication
- url: "https://keys.yourcompany.com/api/keys"
method: "POST"
headers:
Authorization: "Bearer your-secret-token"
Content-Type: "application/json"
body: '{"environment": "production"}'
timeout_seconds: 5
| الرمز | المعنى |
|---|---|
0 | نجاح: تمت معالجة جميع المستخدمين أو تخطيهم |
1 | فشل: فشل مزامنة مستخدم واحد على الأقل |
authorized_keys بشكل ذري مع الصلاحيات المناسبةإذا فشل أي مصدر في الجلب، يقوم AuthKeySync بإحباط التحديث لهذا المستخدم لمنع الحظر. يبقى وصولك الحالي سليمًا كما هو دون تغيير.
إذا وجدت AuthKeySync مفيدًا، يرجى التفكير في منحه نجمة على GitHub ومتابعتي على X (تويتر) للاطلاع على التحديثات:
رخصة MIT. راجع LICENSE للتفاصيل.
| الخيار | النوع | الافتراضي | الوصف |
|---|
backup_enabled | bool | true | إنشاء نسخ احتياطية قبل تعديل authorized_keys |
backup_retention_count | int | 10 | عدد ملفات النسخ الاحتياطي التي سيتم الاحتفاظ بها لكل مستخدم |
preserve_local_keys | bool | true | الاحتفاظ بالمفاتيح الحالية غير الموجودة في المصادر البعيدة |
| مطلوب |
|---|
| الوصف |
|---|
username | string | نعم | اسم مستخدم النظام (مثل: root، deploy) |
sources | قائمة | نعم | قائمة مصادر المفاتيح |
| الخيار | النوع | الافتراضي | الوصف |
|---|
url | string | (مطلوب) | عنوان URL يعيد مفاتيح SSH كنص عادي |
method | string | GET | طريقة HTTP: GET أو POST |
headers | map | {} | ترويسات HTTP مخصصة (مثل: للمصادقة) |
body | string | "" | نص الطلب لطلبات POST |
timeout_seconds | int | 10 | مهلة الطلب بالثواني |
| الخيار | الوصف |
|---|
--config <path> | مسار ملف الإعداد (الافتراضي: /etc/authkeysync/config.yaml) |
--dry-run | محاكاة المزامنة دون تعديل أي ملفات |
--debug | تفعيل تسجيل التصحيح (الأكثر تفصيلاً) |
--quiet | إظهار التحذيرات والأخطاء فقط (موصى به لـ cron) |
--silent | إظهار الأخطاء فقط (الأكثر هدوءًا) |
--version | عرض معلومات الإصدار والخروج |
--help | عرض رسالة المساعدة |