تعلم الانسجام والخروج من OpenSSH على جهاز الكمبيوتر الخاص بك لينكس
لقد أشيدنا بفضائل SSH مرات عديدة ، من أجل الأمن والوصول عن بعد. دعونا نلقي نظرة على الخادم نفسه ، وبعض جوانب "الصيانة" المهمة ، وبعض المراوغات التي يمكن أن تضيف الاضطراب إلى ركوب سلس على نحو آخر.
في حين أننا قمنا بكتابة هذا الدليل مع وضع Linux في الاعتبار ، يمكن أن ينطبق هذا أيضًا على OpenSSH في نظام التشغيل Mac OS X و Windows 7 عبر Cygwin.
لماذا هي آمنة
لقد ذكرنا عدة مرات كيف أن SSH هي طريقة رائعة للاتصال الآمن ونفق البيانات من نقطة إلى أخرى. دعونا نلقي نظرة مختصرة على كيفية عمل الأشياء حتى تحصل على فكرة أفضل عن الأسباب التي تجعل الأشياء غرابة في بعض الأحيان.
عندما نقرر بدء اتصال بجهاز كمبيوتر آخر ، فإننا غالبًا ما نستخدم البروتوكولات التي يسهل التعامل معها. Telnet و FTP يتبادران إلى الذهن. نحن نرسل المعلومات إلى خادم بعيد ثم نحصل على التأكيد مرة أخرى حول اتصالنا. من أجل إنشاء نوع من الأمان ، غالباً ما تستخدم هذه البروتوكولات تركيبات اسم المستخدم وكلمة المرور. هذا يعني أنهم آمنون تمامًا ، أليس كذلك؟ خطأ!
إذا فكرنا في عملية الاتصال الخاصة بنا كالبريد ، فإن استخدام FTP و Telnet وما شابه لا يشبه استخدام المغلفات البريدية القياسية. إنها أشبه باستخدام البطاقات البريدية. إذا حدث شخص ما في منتصف الطريق ، يمكنه رؤية جميع المعلومات ، بما في ذلك عناوين كلا المراسلين واسم المستخدم وكلمة المرور المرسلة. يمكنهم بعد ذلك تغيير الرسالة ، والاحتفاظ بالمعلومات نفسها ، وانتحال شخصية أحد المراسلين أو الآخرين. يُعرف هذا باسم "man-in-the-middle-attack" ، وهو لا يؤثر على حسابك فحسب ، بل يشكك أيضًا في كل رسالة يتم إرسالها وملفها. لا يمكنك التأكد مما إذا كنت تتحدث مع المرسل أم لا ، وحتى لو كنت كذلك ، فلا يمكنك التأكد من عدم النظر إلى أي شيء من بينهما.
الآن ، دعونا ننظر إلى تشفير SSL ، وهو النوع الذي يجعل HTTP أكثر أمانًا. هنا ، لدينا مكتب بريد يتعامل مع المراسلات ، والذي يتحقق لمعرفة ما إذا كان المتلقي هو الذي يدعي أنه موجود ، ولديه قوانين تحمي بريدك من النظر فيه. إنها أكثر أمنًا بشكل عام ، والسلطة المركزية - Verisign هي واحدة ، بالنسبة لمثال HTTPS الخاص بنا - تتأكد من أن الشخص الذي تقوم بإرسال البريد إليه يقوم بالشيك. يفعلون ذلك عن طريق عدم السماح للبطاقات البريدية (أوراق اعتماد غير مشفرة) ؛ بدلا من ذلك فإنها تكلف المغلفات الحقيقية.
أخيرا ، دعونا ننظر إلى SSH. هنا ، الإعداد مختلف قليلاً. ليس لدينا مصدق مركزي هنا ، ولكن الأمور لا تزال آمنة. هذا لأنك ترسل رسائل إلى شخص ما تعرف عنوانه بالفعل - قل ، بالتحدث معه عبر الهاتف - وأنت تستخدم بعض الرياضيات الرائعة حقًا للتوقيع على مظروفك. يمكنك تسليمها لأخيك أو صديقتك أو أبتك أو ابنتك لإخذه إلى العنوان ، وفقط في حالة تطابق الرياضيات المتلائمة مع المتلقي ، تفترض أن العنوان هو ما يجب أن يكون. بعد ذلك ، ستحصل على رسالة ، محمية أيضًا من أعين المتطفلين بهذه الرياضيات الرائعة. وأخيراً ، تقوم بإرسال بيانات الاعتماد الخاصة بك في مغلف خوارزمي مسحور آخر إلى الوجهة. إذا لم تتطابق الرياضيات ، يمكننا أن نفترض أن المستلم الأصلي قد تم نقله ونحتاج إلى تأكيد عنوانه مرة أخرى.
مع التفسير ما دام الأمر كذلك ، نعتقد أننا سنقوم بتقطيعها هناك. إذا كان لديك المزيد من الأفكار ، فلا تتردد في الدردشة في التعليقات ، بالطبع. الآن ، دعونا ننظر إلى الميزة الأكثر ملاءمة لـ SSH ، مصادقة المضيف.
مفاتيح المضيف
مصادقة المضيف هي في الأساس الجزء الذي يثق فيه شخص ما بالظرف (مختومًا بالرياضيات السحرية) ويؤكد عنوان المستلم. إنه وصف مفصّل للعنوان ، وهو يعتمد على بعض الرياضيات المعقدة التي سنتخطّها مباشرةً. هناك نوعان من الأشياء المهمة التي يمكنك أخذها من هذا ، على الرغم من:
- نظرًا لعدم وجود سلطة مركزية ، يكمن الأمان الحقيقي في مفتاح المضيف والمفاتيح العامة والمفاتيح الخاصة. (يتم تكوين هذين المفتاحين الأخيرين عند منحك حق الوصول إلى النظام.)
- عادةً ، عند الاتصال بجهاز كمبيوتر آخر عبر SSH ، يتم تخزين مفتاح المضيف. هذا يجعل الأعمال المستقبلية أسرع (أو أقل مطولاً).
- إذا تغير مفتاح المضيف ، فسيتم تنبيهك على الأرجح ويجب أن تكون حذرًا!
نظرًا لاستخدام مفتاح المضيف قبل المصادقة لإنشاء هوية خادم SSH ، يجب التأكد من التحقق من المفتاح قبل الاتصال. سترى مربع حوار تأكيد مثل أدناه.
لا داعي للقلق ، على الرغم من! في كثير من الأحيان عندما يكون الأمن مصدر قلق ، سيكون هناك مكان خاص يمكن تأكيد مفتاح المضيف (بصمة ECDSA أعلاه). في المشروعات عبر الإنترنت تمامًا ، غالبًا ما تكون في موقع آمن لتسجيل الدخول فقط. قد تضطر إلى (أو تختار!) الاتصال بقسم تكنولوجيا المعلومات الخاص بك لتأكيد هذا المفتاح عبر الهاتف. لقد سمعت عن بعض الأماكن التي يوجد فيها المفتاح في شارة عملك أو في قائمة "أرقام الطوارئ" الخاصة. وإذا كان لديك وصول فعلي إلى الجهاز المستهدف ، فيمكنك أيضًا التحقق بنفسك!
التحقق من مفتاح مضيف النظام الخاص بك
هناك 4 أنواع من أنواع خوارزميات التشفير المستخدمة لإنشاء المفاتيح ، ولكن الافتراضي لـ OpenSSH اعتبارًا من بداية هذا العام هو ECDSA (مع بعض الأسباب الوجيهة). سنركز على ذلك اليوم. إليك الأمر الذي يمكنك تشغيله على خادم SSH الذي يمكنك الوصول إليه:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
يجب أن يعرض ناتجك شيئًا كالتالي:
256 ca: 62: ea: 7c: e4: 9e: 2e: a6: 94: 20: 11: db: 9c: 78: c3: 4c /etc/ssh/ssh_host_ecdsa_key.pub
الرقم الأول هو طول البت للمفتاح ، ثم المفتاح نفسه ، وأخيرًا يكون لديك الملف المخزن به. قارن هذا الجزء الأوسط بما تراه عند مطالبتك بتسجيل الدخول عن بُعد. يجب أن تتطابق ، وأنت مستعد تمامًا. إذا لم يحدث ذلك ، يمكن أن يحدث شيء آخر.
يمكنك عرض جميع المضيفين الذين قمت بالاتصال بهم عبر SSH من خلال النظر إلى ملف known_hosts الخاص بك. يقع عادة في:
~ / .ssh / known_hosts
يمكنك فتح ذلك في أي محرر نصوص. إذا نظرت ، حاول الانتباه إلى كيفية تخزين المفاتيح. يتم تخزينها مع اسم الكمبيوتر المضيف (أو عنوان الويب) وعنوان IP الخاص به.
تغيير مفاتيح المضيف والمشاكل
هناك عدة أسباب لتغيير مفاتيح المضيف أو عدم تطابقها مع ما يتم تسجيله في ملف known_hosts.
- تمت إعادة تثبيت / إعادة تهيئة النظام.
- تم تغيير مفاتيح المضيف يدويًا بسبب بروتوكولات الأمان.
- تم تحديث خادم OpenSSH ويستخدم معايير مختلفة بسبب مشكلات تتعلق بالأمان.
- تغير IP أو DNS عقد الإيجار. هذا يعني غالبًا أنك تحاول الوصول إلى جهاز كمبيوتر مختلف.
- تم اختراق النظام بطريقة ما بحيث تغير مفتاح المضيف.
على الأرجح ، المشكلة هي واحدة من الثلاثة الأولى ، ويمكنك تجاهل التغيير. إذا تغير عقد الإيجار IP / DNS ، فقد تكون هناك مشكلة في الخادم وقد يتم توجيهك إلى جهاز آخر. إذا لم تكن متأكدًا من السبب وراء هذا التغيير فيجب أن تفترض أنه الأخير في القائمة.
كيف OpenSSH يعالج المضيفين غير معروف
يحتوي OpenSSH على إعداد لكيفية التعامل مع المضيفات المجهولة ، وينعكس في متغير "StrictHostKeyChecking" (بدون علامتي الاقتباس).
اعتمادا على التكوين الخاص بك ، يمكن لاتصالات SSH مع مضيفين غير معروفين (لا تكون مفاتيحهم موجودة بالفعل في ملف known_hosts) أن تقوم بثلاث طرق.
- تم تعيين StrictHostKeyChecking إلى لا؛ سوف يتصل OpenSSH تلقائيًا بأي خادم SSH بغض النظر عن حالة مفتاح المضيف. هذا غير آمن وغير مستحسن ، باستثناء ما إذا كنت تضيف مجموعة من المضيفين بعد إعادة تثبيت نظام التشغيل الخاص بك ، وبعد ذلك سوف تقوم بتغييره.
- تم تعيين StrictHostKeyChecking يسأل؛ سوف يعرض لك OpenSSH مفاتيح مضيف جديدة ويطلب منك التأكيد قبل إضافتها. سيمنع الاتصالات من الانتقال إلى مفاتيح المضيف التي تم تغييرها. هذا هو الافتراضي.
- تم تعيين StrictHostKeyChecking إلى نعم؛ عكس "لا" ، سيؤدي ذلك إلى منعك من الاتصال بأي مضيف غير موجود بالفعل في ملف known_hosts الخاص بك.
يمكنك تغيير هذا المتغير بسهولة على سطر الأوامر باستخدام النموذج التالي:
ssh -o 'StrictHostKeyChecking [option]' user @ host
استبدل [option] بـ "لا" أو "اسأل" أو "نعم". كن على دراية بأن هناك علامات اقتباس مستقيمة مفردة تحيط بهذا المتغير وإعداده. استبدل أيضًا user @ host باسم المستخدم واسم المضيف للخادم الذي تتصل به. فمثلا:
ssh -o 'StrictHostKeyChecking ask "[email protected]
المضيفين المحظورين بسبب تغيير المفاتيح
إذا كان لديك خادم تحاول الوصول إليه تم تغيير مفتاحه بالفعل ، فإن تكوين OpenSSH الافتراضي سيمنعك من الوصول إليه. يمكنك تغيير قيمة StrictHostKeyChecking لهذا المضيف ، لكن ذلك لن يكون تمامًا ، تمامًا ، آمن بجنون العظمة ، أليس كذلك؟ بدلاً من ذلك ، يمكننا ببساطة إزالة القيمة المسيئة من ملف known_hosts الخاص بنا.
هذا بالتأكيد شيء قبيح على الشاشة. لحسن الحظ ، كان السبب في ذلك هو نظام التشغيل الذي أعيد تثبيته. لذلك ، دعونا تكبير الخط الذي نحتاجه.
هناك نذهب. انظر كيف يستشهد بالملف الذي نحتاج إلى تعديله؟ حتى يعطينا رقم السطر! لذلك ، دعونا فتح هذا الملف في نانو:
إليك مفتاحنا المسيء ، في السطر 1. كل ما نحتاج إلى فعله هو الضغط على Ctrl + K لقطع الخط بالكامل.
ذاك افضل بكثير! لذلك ، نضغط الآن على Ctrl + O لكتابة (حفظ) الملف ، ثم Ctrl + X للخروج.
الآن نحصل على مطالبة لطيفة بدلاً من ذلك ، يمكننا ببساطة الرد عليها بـ "نعم".
خلق مفاتيح المضيف الجديد
للسجل ، ليس هناك الكثير من الأسباب التي تدفعك لتغيير مفتاح المضيف الخاص بك على الإطلاق ، ولكن إذا وجدت الحاجة ، فيمكنك فعله بسهولة.
أولاً ، قم بالتغيير إلى دليل النظام المناسب:
cd / etc / ssh /
هذا هو عادة مكان مفاتيح المضيف العالمية ، على الرغم من بعض توزيعات وضعها في مكان آخر. عندما تكون في شك التحقق من الوثائق الخاصة بك!
بعد ذلك ، سنحذف جميع المفاتيح القديمة.
sudo rm / etc / ssh / ssh_host_ *
بدلاً من ذلك ، قد ترغب في نقلها إلى دليل النسخ الاحتياطي الآمن. مجرد فكرة!
بعد ذلك ، يمكننا إخبار خادم OpenSSH بإعادة تكوين نفسه:
sudo dpkg-reconfigure openssh-server
سترى مطالبة أثناء قيام الكمبيوتر بإنشاء مفاتيحه الجديدة. تا-دا!
الآن بعد أن تعرفت على كيفية عمل SSH بشكل أفضل ، يجب أن تكون قادرًا على إخراج نفسك من البقع الصعبة. تحذير / خطأ "تم تغيير تعريف المضيف البعيد" هو شيء يؤدي إلى إلقاء الكثير من المستخدمين ، حتى أولئك المألوفين لسطر الأوامر.
.