ودّع كلمة مرور السيرفر: الدخول بمفاتيح SSH وتعطيل كلمة المرور خطوة بخطوة

مفتاح SSH بطول 256-bit أقوى من كلمة مرور من 12 حرفاً بفارق فلكي، وتعطيل دخول كلمة المرور يقطع 99% من محاولات الاختراق الآلية. إليك كيف تعمل المفاتيح وكيف تُعدّها وتقفل السيرفر عليها.
الجواب المباشر: ليش تستبدل كلمة المرور بمفاتيح SSH
الدخول للسيرفر بمفتاح SSH بدل كلمة المرور يعني أنك تستبدل سرّاً قابلاً للتخمين بزوج مفاتيح تشفيري يستحيل تخمينه عملياً. كلمة المرور تُرسَل، تُخزَّن، وتُخمَّن؛ أما مفتاح SSH فيبقى نصفه السرّي على جهازك ولا يغادره أبداً، ولا يمرّ أي سرّ فعلي عبر الشبكة أثناء الدخول. عملياً: تولّد زوجاً من المفاتيح على جهازك، تنسخ المفتاح العام إلى السيرفر، ثم تعطّل دخول كلمة المرور نهائياً من ملف sshd_config. النتيجة أن أي شخص يحاول الدخول بكلمة مرور مسروقة أو مخمّنة يُرفَض قبل أن يبدأ.
الفرق الأمني ليس تجميلياً. سيرفر مكشوف على المنفذ 22 بكلمة مرور يستقبل في المتوسط من 2,000 إلى 5,000 محاولة دخول آلية يومياً من شبكات botnet تجرّب قوائم كلمات مرور مسرّبة. لحظة تعطيل كلمة المرور، كل هذه المحاولات تفشل فوراً مهما كانت كلمة المرور صحيحة، لأن الخادم ببساطة لم يعد يقبل هذا النوع من المصادقة. مفتاح من نوع Ed25519 يعتمد على قوة تشفيرية تعادل مفتاح RSA بطول 3072-bit، وكسره بالحوسبة الحالية يتطلّب زمناً أطول من عمر الكون. هذا المقال يشرح الآلية من الداخل، ثم يعطيك خطوات الإعداد على سيرفر كلاود السعودي، وأخيراً كيف تقفل الباب على كلمة المرور بأمان بلا أن تحبس نفسك خارج السيرفر.
كيف يعمل تشفير المفتاح العام فعلياً
مصادقة SSH بالمفاتيح مبنية على التشفير غير المتماثل، أي أن لديك مفتاحين رياضيين مرتبطين: مفتاح عام (public) ومفتاح خاص (private). ما يُقفَل بأحدهما لا يُفتَح إلا بالآخر، ولا يمكن استنتاج المفتاح الخاص من العام. المفتاح العام تنشره بلا خوف وتضعه على السيرفر، والمفتاح الخاص تحرسه على جهازك ولا تشاركه مع أحد إطلاقاً.
عند الاتصال، لا يُرسَل المفتاح الخاص عبر الشبكة. بدلاً من ذلك يجري تبادل تحدٍّ وردّ: السيرفر يرسل بيانات عشوائية، وجهازك يوقّعها بالمفتاح الخاص، والسيرفر يتحقق من التوقيع بالمفتاح العام المخزّن عنده. لو صحّ التوقيع، يُسمَح بالدخول. هذه العملية تتكرر في كل جلسة بقيم عشوائية جديدة، لذلك حتى لو التقط مهاجم حركة الشبكة كاملة فلن يستفيد منها لجلسة قادمة.
لماذا المفتاح أقوى من كلمة المرور بمراحل
- كلمة مرور من 12 حرفاً عشوائياً تعطي نحو 72-bit من العشوائية في أفضل الحالات، بينما مفتاح Ed25519 يعطي مستوى أمان يعادل 128-bit، أي فرق يقارب 72 خانة عشرية في عدد الاحتمالات.
- كلمة المرور يمكن تخمينها بهجوم قاموس أو brute-force؛ المفتاح الخاص بطول 256-bit خارج نطاق أي هجوم تخميني واقعي.
- كلمة المرور تُعاد كتابتها على أجهزة قد تكون مصابة بـ keylogger؛ المفتاح الخاص لا يُكتَب يدوياً أبداً.
- كلمة المرور نفسها قد تُعاد على عدة خدمات فتُسرَّب من أضعفها؛ لكل سيرفر مفتاحه المستقل بلا إعادة استخدام.
أنواع المفاتيح: أيّها تختار في 2026
ليست كل الخوارزميات متساوية، والاختيار الخاطئ يترك ثغرة. القاعدة اليوم بسيطة: استخدم Ed25519 كخيار أول، أو RSA بطول 4096-bit إن اضطررت للتوافق مع أنظمة قديمة، وتجاهل الباقي.
Ed25519 (الخيار الموصى به)
خوارزمية حديثة مبنية على المنحنيات الإهليلجية، مفتاحها صغير (68 حرفاً تقريباً في السطر) لكن قوته تعادل RSA-3072. توقيعها أسرع، والتحقق منها أسرع، ومقاومتها لبعض هجمات القنوات الجانبية أعلى بحكم تصميمها. أي سيرفر حديث يدعم OpenSSH 6.5 أو أعلى (صدر 2014) يقبلها، وهذا يشمل كل توزيعات لينكس المستخدمة على سيرفرات كلاود.
RSA-4096
الخيار الكلاسيكي المتوافق مع كل شيء تقريباً، لكن مفتاحه أضخم وتوقيعه أبطأ. لا تنزل تحت 3072-bit، ومفاتيح RSA بطول 1024-bit تُعتبر مكسورة عملياً منذ سنوات وترفضها الأنظمة المُحدَّثة. إن كان لديك مفتاح RSA قديم بطول 2048-bit فاعتبره مقبولاً مؤقتاً لكن خطّط لترقيته.
خوارزميات DSA وECDSA تُتجنّب: DSA أُزيلت رسمياً من OpenSSH منذ الإصدار 7.0، وECDSA تعتمد على منحنيات تثير قلقاً حول طريقة توليد ثوابتها. البقاء على Ed25519 يريحك من هذا كله. للسياق، أكثر من 90% من مفاتيح SSH المولّدة حديثاً على GitHub اليوم هي إما Ed25519 أو RSA-4096.
توليد المفتاح على جهازك
العملية تستغرق أقل من دقيقة. على macOS أو لينكس افتح الطرفية، وعلى ويندوز استخدم PowerShell أو Windows Terminal (يأتي OpenSSH مدمجاً منذ Windows 10). الأمر الأساسي:
ssh-keygen -t ed25519 -C "laptop-2026"
الخيار t يحدد نوع الخوارزمية، والخيار C يضيف تعليقاً يساعدك على تمييز المفتاح لاحقاً (اسم الجهاز مثلاً). سيسألك الأمر عن مكان الحفظ، والافتراضي داخل مجلد .ssh بأسماء id_ed25519 للمفتاح الخاص وid_ed25519.pub للعام.
عبارة المرور (passphrase): لا تتخطّاها
سيطلب منك ssh-keygen عبارة مرور تحمي المفتاح الخاص نفسه. هذه طبقة ثانية مهمة: لو سُرق ملف المفتاح الخاص من جهازك، تبقى العبارة حاجزاً يمنع استخدامه. تجاهلها يعني أن أي شخص يصل لجهازك يدخل سيرفرك مباشرة. استخدم عبارة قوية، ودع وكيل المفاتيح (ssh-agent) يحفظها في الجلسة حتى لا تكتبها في كل اتصال. تفعيل ssh-agent وإضافة المفتاح يتم بأمرين، فتكتب العبارة مرة واحدة يومياً بدل كل دخول.
بعد التوليد يكون لديك ملفان. المفتاح العام (بامتداد pub) هو وحده ما يذهب للسيرفر، والمفتاح الخاص يبقى على جهازك بصلاحيات 600 (قراءة وكتابة للمالك فقط). SSH يرفض العمل بمفتاح خاص صلاحياته مفتوحة للآخرين، وهذا فحص أمني مقصود.
نسخ المفتاح العام إلى سيرفر كلاود
أسهل طريقة أمر واحد من جهازك:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@your-server-ip
سيطلب منك كلمة مرور السيرفر لمرة أخيرة، ثم يضيف مفتاحك العام إلى ملف ~/.ssh/authorized_keys على السيرفر بالصلاحيات الصحيحة تلقائياً. بعدها جرّب الدخول: ssh root@your-server-ip، فيدخلك بلا طلب كلمة مرور السيرفر (قد يطلب عبارة مرور مفتاحك المحلي فقط). هذه اللحظة هي الاختبار الحاسم: لا تكمل الخطوة التالية قبل أن تتأكد أن الدخول بالمفتاح يعمل.
لو لم يتوفر ssh-copy-id (نادر على ويندوز)، تنسخ محتوى ملف pub يدوياً وتلصقه سطراً مستقلاً داخل authorized_keys على السيرفر. المهم أن يكون المفتاح كله في سطر واحد، وأن تكون صلاحيات مجلد ssh هي 700 وملف authorized_keys هي 600، وإلا رفض SSH استخدامه صمتاً. على سيرفرات كلاود المُدارة تُفعَّل هذه الصلاحيات بشكل صحيح افتراضياً عند التزويد، فتوفّر عليك هذه المزالق.
تعطيل دخول كلمة المرور: قفل الباب
هنا تجني الفائدة الكبرى. طالما بقي دخول كلمة المرور مفعّلاً، فوجود المفتاح لا يمنع أحداً من تجربة كلمات المرور. الإعداد يتم في ملف /etc/ssh/sshd_config على السيرفر. عدّل أو أضف الأسطر التالية:
- PasswordAuthentication no: يمنع الدخول بكلمة المرور نهائياً.
- PubkeyAuthentication yes: يؤكد تفعيل المصادقة بالمفاتيح.
- PermitRootLogin prohibit-password: يسمح لـ root بالدخول بالمفتاح فقط لا بكلمة مرور، أو اجعلها no إن كنت تستخدم مستخدماً عادياً مع sudo.
- ChallengeResponseAuthentication no: يغلق مسار مصادقة بديلاً قد يعيد فتح كلمة المرور غير مباشرة.
بعد التعديل، أعد تشغيل الخدمة بأمر systemctl restart sshd. القاعدة الذهبية التي تحميك من حبس نفسك خارج السيرفر: افتح جلسة SSH ثانية جديدة وتأكد أنها تدخل بالمفتاح قبل أن تغلق جلستك الأولى. ما دامت جلستك الحالية مفتوحة، تبقى قادراً على التراجع لو أخطأت في الإعداد.
احترازات إضافية تستحق الدقائق
- غيّر منفذ SSH من 22 إلى رقم غير قياسي؛ لا يزيد الأمان جوهرياً لكنه يقلّص ضجيج السجلّات بنسبة تتجاوز 95% لأن الماسحات الآلية تستهدف المنفذ 22.
- فعّل fail2ban ليحظر أي عنوان IP يكرر المحاولات الفاشلة، فيصدّ حتى المحاولات على المفاتيح.
- استخدم جدار حماية (ufw أو nftables) يسمح بمنفذ SSH فقط من عناوين موثوقة إن أمكن.
- راجع ملف authorized_keys دورياً واحذف أي مفتاح لجهاز قديم أو موظف غادر.
الأمان مع سيرفر سعودي: الطبقة المكمّلة
مفاتيح SSH تحمي طريقة الدخول، لكن موقع السيرفر يحمي البيانات نفسها. سيرفرات كلاود في الرياض تعطيك زمن استجابة قرابة 8ms داخل المملكة مقابل 100 إلى 120ms للسيرفرات الخارجية، وهذا يعني أن جلسة SSH تستجيب فورياً بلا تأخير محسوس، فيسهل العمل التفاعلي على السيرفر. الأهم أن بقاء البيانات داخل حدود المملكة يخدم متطلبات النفاذ الوطني والامتثال للحوكمة، وهو ما يهم الجهات التي تدير أنظمة مخصصة حسّاسة.
التزويد التلقائي على كلاود يفعّل السيرفر خلال ثوانٍ بعد الدفع، ويمكنك من اللحظة الأولى رفع مفتاحك العام وقفل كلمة المرور قبل أن يستقبل السيرفر أي محاولة دخول خارجية. الجمع بين مصادقة المفاتيح، ومنفذ غير قياسي، وfail2ban، وجدار حماية، يقلّص سطح الهجوم إلى حدّ يجعل السيرفر عملياً غير مرئي للهجمات الآلية العشوائية التي تشكّل الغالبية الساحقة من محاولات الاختراق على الإنترنت اليوم.
الخلاصة الهندسية: توليد مفتاح Ed25519 ونسخه وتعطيل كلمة المرور لا يستغرق أكثر من خمس دقائق، لكنه يرفع أمان الدخول من مستوى قابل للاختراق آلياً إلى مستوى يتطلّب سرقة جهازك فعلياً. ابدأ به على أول سيرفر تشغّله، واجعله عادة ثابتة في كل جهاز تُصدره.


