عبارة مرور مفتاح SSH تحمي الملف لا المسار
عبارة المرور تشفّر ملف المفتاح الخاص؛ وهي لا تلغي الهوية ولا تؤمّن المسار. تخزين منفصل، وعمر الوكيل، واستخدام غير مراقب.
ما زال قرص نسخ احتياطي من حاسوب محمول سابق يحتوي على مفتاح SSH خاص، ويسأل أحدهم هل تحميه الشبكة الخاصة الافتراضية. لا تحميه، ولم تفعل ذلك قط. تحمي الشبكة الخاصة الافتراضية مسارًا بين شبكتين؛ وتحمي عبارة المرور الملف؛ ويحمي الوكيل جلسة قيد التشغيل. ثلاث آليات مختلفة، وثلاثة أنماط فشل مختلفة، والنسخة المسروقة لا تهمها إلا الأولى والثانية.
عبارة المرور تنتمي إلى الملف
تشفّر عبارة مرور مفتاح SSH مادة المفتاح الخاص في حالة السكون. وهي ليست كلمة مرور الحساب المرسلة إلى الخادم، وليست بيانات الاعتماد المستخدمة للانضمام إلى الشبكة الخاصة الافتراضية. والخلط بينهما يؤدي إلى تغييرات لا تعالج التعرّض.
يغطي دليل ssh-keygen الخاص بـ OpenSSH التعامل مع عبارات المرور، بما في ذلك المفتاح -p الذي يضع عبارة مرور جديدة على مفتاح موجود بالفعل.
بالنسبة لمفتاح موجود، يكون شكل الأمر بسيطًا، وهو يعيد كتابة الملف:
ssh-keygen -p -f ~/.ssh/id_ed25519
استخدم عملية الصيانة والاستعادة المعتمدة لدى مالك المفتاح، لأن هذا كتابة وليس فحصًا. لا تنشر الملف الخاص ولا تضع عبارة مرور حقيقية على سطر أوامر مشترك. تغيير عبارة المرور لا يعيد تشفير نسخة أُخذت في وقت سابق. احتفظ بموقع النسخة القديمة في التذكرة ليقرر المالك ما إذا كان سيتلفها.
النسخة تعيش أطول من الحاسوب والنفق
بمجرد نسخ ملف المفتاح، لم يعد اتصال الشبكة الخاصة الافتراضية الحالي على الحاسوب يقول شيئًا عنه. المهم هو مدى حماية الملف نفسه، وأي الخوادم ما زالت تثق بالمفتاح العام المطابق.
تغيير عبارة المرور على الملف الحالي لا يمس النسخة، ولا يزيل المفتاح العام نفسه من authorized_keys على خادم. الإلغاء وإعادة التشفير إجراءان منفصلان.
لذا تعامل مع مفتاح خاص مسرّب كحدث هوية، لا كحدث شبكة. أزل المفتاح المقبول أو استبدله عبر الخوادم وعملية التسجيل التي تملكه. إيقاف الشبكة الخاصة الافتراضية يحدّ مسارًا واحدًا في لحظة واحدة؛ وهو ليس إلغاءً.
فتح القفل ينقل السر إلى وكيل
يحتفظ الوكيل بهويات مفكوكة التشفير للتحقق اللاحق، حتى لا يعيد المستخدم كتابة عبارة المرور عند كل اتصال. تلك ميزة سهولة استخدام لها حدود أمان خاصة بها.
يستطيع ssh-agent تحديد المدة التي تبقى فيها الهوية محمّلة عبر خياره -t، وقد يتجاوز إعداد خاص بهوية واحدة ذلك الحد. اختر السياسة للوكيل الذي تشغّله فعليًا بدلًا من افتراض أن قطع الاتصال بالشبكة الخاصة الافتراضية ينسى كل مفتاح محمّل.
العملية التي تُخترق بعد فتح قفل المفتاح مشكلة مختلفة عن ملف مشفّر مسروق. تمرير الوكيل إلى مضيف آخر يفوّض قدرة التحقق دون نسخ ملف المفتاح، لذا لا تفعّله إلا لحاجة معتمدة.
اسرد ما يحتفظ به الوكيل حاليًا قبل التغيير وبعده:
ssh-add -l
المهام غير المراقبة تحتاج خطتها الخاصة
لا يستطيع عمل مجدول الإجابة على مطالبة. إنه يحتاج ترتيبًا معتمدًا لبيانات اعتماد الجهاز، ولا يخلق الاحتفاظ بسر فتح القفل في الدليل نفسه الذي يحوي المفتاح، وقابلًا للقراءة بالحساب نفسه، حدًا ثانيًا.
اعمل مع مالك الخدمة على تسليم الأسرار المدعوم أو التشغيل المدعوم بالعتاد، وغطِّ التجديد والفشل والاستعادة. الرغبة في وجود إنسان أمام لوحة المفاتيح تغيّر شكل الفشل مقارنة بمضيف يقلع دون أن يراقبه أحد.
أبقِ أيضًا فحص هوية المضيف على الخادم وقيود الحساب الخاصة به. يمنحك مسار الشبكة الخاصة الافتراضية طريقًا خاصًا؛ لكنه لا يثبت أن كل مستمع SSH يمكنك الوصول إليه هو المضيف الذي تقصده. سجّل المستمع وبصمة مفتاح المضيف في الجرد نفسه الذي يحوي المفتاح.
تحقّق من الحدود كلٌّ على حدة
اختبر كل حد بسؤاله الخاص. هل يُفتح الملف دون عبارة المرور؟ هل ما زال الوكيل يحتفظ بالهوية بعد قطع الاتصال؟ هل ما زال الخادم يقبل المفتاح العام؟
أمران يجيبان عن الأول والثالث:
ssh-keygen -y -f ~/.ssh/id_ed25519
ssh -v [email protected]
سجّل حماية الملف، واستخدام المفتاح المسموح، والإزالة من جانب الخادم كبنود منفصلة ثلاثة. النفق وعبارة المرور والوكيل يحرس كل منها جزءًا مختلفًا من العلاقة، وواحد فقط منها يتعلق بالشبكة.