كلمة المرور يمكن أن تُخمَّن أو تُسرق أو تُنسى. أما مفتاح SSH فهو ملف على جهازك يثبت هويتك للسيرفر دون أن تكتب شيئًا، ويستحيل عمليًا تخمينه. في هذا الدليل ننشئ مفتاح SSH حقيقيًا على ويندوز وعلى لينكس، ونضعه على سيرفر في مرام هوست، وندخل بلا كلمة مرور — مع حل خطأ صلاحيات مفتاح SSH الشهير في ويندوز، وطريقة الهاتف.
⚡ الإجابة المختصرة
على جهازك نفّذ ssh-keygen -t ed25519 واضغط Enter للإعدادات الافتراضية. ثم انسخ المفتاح العام إلى السيرفر: في الماك ولينكس ssh-copy-id -p 2026 maram@IP، وفي ويندوز بأمر type … | ssh … الموضح أدناه. بعدها ssh -p 2026 maram@IP يدخل مباشرة.
محتويات الدليل
لماذا تستخدم مفتاح SSH بدل كلمة المرور؟
الدخول بـمفتاح SSH ليس أسهل فحسب، بل أأمن بمراحل من كلمة المرور:
- يستحيل تخمينه: بينما كلمة المرور قد تُخمَّن، طول مفتاح SSH يجعل تخمينه مستحيلًا عمليًا.
- لا يُرسَل عبر الشبكة: المفتاح الخاص يبقى على جهازك ولا يغادره أبدًا.
- يُلغي هجمات التخمين: بإيقاف كلمة المرور تصبح محاولات التخمين على SSH بلا هدف.
- دخول فوري: بلا كتابة كلمة مرور كل مرة، ويعمل مع scp وrsync والاختصارات.
لهذا يُعدّ مفتاح SSH المعيار المهني لإدارة الخوادم. ولفهم أعمق راجع توثيق ssh-keygen ودليل GitHub لمفاتيح SSH.
كيف يعمل مفتاح SSH؟
المفتاح زوج من ملفين: مفتاح خاص (id_ed25519) يبقى على جهازك كأنه مفتاح بيتك ولا تعطيه لأحد، ومفتاح عام (id_ed25519.pub) كأنه القفل، تضعه على السيرفر في الملف ~/.ssh/authorized_keys. عند الاتصال يتأكد السيرفر أن مفتاحك الخاص يطابق القفل، دون أن يُرسَل المفتاح الخاص نفسه أبدًا.
الخطوة 1: أنشئ المفتاح
الأمر نفسه في ويندوز (PowerShell) والماك ولينكس (Terminal):
ssh-keygen -t ed25519 -C "my-laptop"
اضغط Enter لقبول مكان الحفظ، ثم يسألك عن passphrase: كلمة سرّ اختيارية تحمي الملف لو سُرق جهازك (ننصح بها للحواسيب المحمولة)، أو اضغط Enter مرتين لتتركها فارغة. هذه مخرجات حقيقية على ويندوز (مع تقصير المسار):

الخطوة 2: ضع المفتاح العام على السيرفر
من ويندوز: لا يوجد ssh-copy-id، لكن هذا الأمر يؤدي الغرض نفسه. سيطلب كلمة المرور مرة أخيرة:

من الماك ولينكس: أمر واحد يتولى كل شيء:

من الهاتف: Termius
في تطبيق Termius أنشئ مفتاحًا من قسم Keychain، ثم انسخ المفتاح العام (السطر الذي يبدأ بـssh-ed25519) وأضفه إلى السيرفر بسطر في ~/.ssh/authorized_keys، واختر المفتاح في إعدادات السيرفر داخل التطبيق. التفاصيل في دليل Termius.
# على السيرفر: إضافة مفتاح عام يدويًا (سطر واحد لكل جهاز)
echo "ssh-ed25519 AAAA...المفتاح... my-phone" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
خطأ ويندوز: UNPROTECTED PRIVATE KEY FILE
واجهنا هذا الخطأ فعلًا أثناء التجربة: ويندوز يرفض استعمال مفتاح يستطيع مستخدم آخر على الجهاز قراءته، فيتجاهله ويطلب كلمة المرور أو يرفض الدخول:

الحل: أعد صلاحيات الملف لحسابك وحدك (في PowerShell):
icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r
icacls $env:USERPROFILE\.ssh\id_ed25519 /grant:r "$($env:USERNAME):(R)"
اختياري: أوقف الدخول بكلمة المرور
بعد أن تتأكد أن المفتاح يعمل، تستطيع منع الدخول بكلمة المرور عبر SSH نهائيًا، فتصبح محاولات التخمين بلا فائدة. اترك جلستك الحالية مفتوحة وجرّب الدخول من نافذة جديدة قبل إغلاقها:
echo "PasswordAuthentication no" | sudo tee /etc/ssh/sshd_config.d/10-no-password.conf
sudo sshd -t && sudo systemctl reload ssh # sshd -t يفحص الإعداد قبل التطبيق
الرقم 10 في اسم الملف مقصود: SSH يقرأ الملفات بالترتيب ويأخذ أول قيمة، فيسبق ملفك أي إعداد لاحق يسمح بكلمة المرور. ولن تفقد السيرفر لو ضاع مفتاحك: الكونسول في لوحة مرام يقبل كلمة المرور دائمًا لأنه لا يمرّ عبر SSH، وتستطيع تغييرها من اللوحة.
نصائح
- مفتاح لكل جهاز باسم واضح في
-C(my-laptop، my-phone)، فإن ضاع جهاز حذفت سطره فقط منauthorized_keys. - لا ترسل المفتاح الخاص لأحد، ولا تضعه على السيرفر. المبرمج الذي يعمل معك ينشئ مفتاحه ويعطيك العام فقط.
- احفظ نسخة من مفتاحك الخاص في مكان آمن (مدير كلمات مرور أو قرص مشفّر).
أخطاء شائعة عند استخدام مفتاح SSH
تجنّب هذه الأخطاء لتبقى ميزة مفتاح SSH الأمنية سليمة:
- مشاركة المفتاح الخاص: لا ترسله لأحد ولا تضعه على السيرفر؛ يُنشَر المفتاح العام فقط.
- صلاحيات مفتوحة في ويندوز: تسبّب خطأ UNPROTECTED PRIVATE KEY FILE؛ أصلحها بـicacls لحسابك وحدك.
- إيقاف كلمة المرور قبل التأكد: جرّب الدخول بالمفتاح من نافذة جديدة قبل إغلاق جلستك الحالية.
- مفتاح واحد لكل الأجهزة: أنشئ مفتاح SSH لكل جهاز باسم واضح لتحذفه وحده إن ضاع الجهاز.
- بلا نسخة احتياطية: احفظ المفتاح الخاص في مدير كلمات مرور أو قرص مشفّر.
- ترك المحمول بلا passphrase: أضف passphrase لحماية المفتاح لو سُرق الجهاز.
أسئلة شائعة عن مفتاح SSH
ما مفتاح SSH وكيف يعمل؟
هو زوج من ملفين: مفتاح خاص يبقى على جهازك، ومفتاح عام تضعه على السيرفر في authorized_keys. عند الاتصال يتأكد السيرفر أن الخاص يطابق العام دون أن يُرسَل الخاص أبدًا.
كيف أنشئ مفتاح SSH؟
نفّذ ssh-keygen -t ed25519 في PowerShell (ويندوز) أو Terminal (ماك/لينكس)، واضغط Enter للإعدادات الافتراضية، ثم انسخ المفتاح العام إلى السيرفر.
هل مفتاح SSH أأمن من كلمة المرور؟
نعم بمراحل؛ يستحيل تخمينه عمليًا ولا يُرسَل المفتاح الخاص عبر الشبكة. وبإيقاف كلمة المرور تصبح هجمات التخمين على SSH بلا فائدة.
كيف أضع مفتاح SSH على السيرفر؟
في الماك ولينكس ssh-copy-id -p 2026 maram@IP، وفي ويندوز أمر type … | ssh …، أو أضف سطر المفتاح العام يدويًا إلى ~/.ssh/authorized_keys.
ماذا لو ضاع مفتاح SSH أو فقدت الجهاز؟
احذف سطر ذلك الجهاز من authorized_keys على السيرفر. ولن تفقد السيرفر لأن الكونسول في لوحة مرام يقبل كلمة المرور دائمًا فلا يمرّ عبر SSH.
لماذا يظهر خطأ UNPROTECTED PRIVATE KEY FILE في ويندوز؟
لأن صلاحيات ملف المفتاح تسمح لمستخدمين آخرين بقراءته، فيرفضه ويندوز. أصلحها بأمري icacls لتقصر الوصول على حسابك وحدك.
