المقدمة
يصف هذا المستند المشكلة على موجه Cisco IOS® عندما يفشل بروتوكول Secure Shell (SSH) إلى الموجه في بعض الأحيان مع فشل مصادقة المستخدم الذي تم الإعلام عنه في تصحيح أخطاء SSH. تحدث هذه المشكلة رغم أن بيانات اعتماد المستخدم التي تم إدخالها صحيحة وأن نفس بيانات الاعتماد تعمل بشكل صحيح ل Telnet.
ملاحظة: تم تصنيف معرف تصحيح الأخطاء من Cisco CSCum19502 من أجل جعل السلوك بين SSH و Telnet متناسقا.
المشكلة
لاحظ في عمليات تصحيح الأخطاء هذه أنه على الرغم من تمكين "مصادقة AAA"، لا يوجد تصحيح أخطاء المصادقة والتفويض والمحاسبة (AAA) التي يتم طباعتها لإظهار AAA فعليا يتم استدعاؤها وإرجاع الفشل.
Router#show debug
General OS:
AAA Authentication debugging is on
SSH:
Incoming SSH debugging is on
ssh detail messages debugging is on
Router#
*Sep 30 20:28:57.172: SSH2 2: MAC compared for #8 :ok
*Sep 30 20:28:57.172: SSH2 2: input: padlength 15 bytes
*Sep 30 20:28:57.172: SSH2 2: Using method =
keyboard-interactive
*Sep 30 20:28:57.172: SSH2: password authentication failed
for cisco
*Sep 30 20:28:59.172: SSH2 2: send:packet of length 64
(length also includes padlen of 14)
*Sep 30 20:28:59.172: SSH2 2: computed MAC for sequence
no.#8 type 51
*Sep 30 20:29:01.751: SSH2 2: ssh_receive: 144 bytes received
*Sep 30 20:29:01.751: SSH2 2: input: total packet length of
128 bytes
*Sep 30 20:29:01.751: SSH2 2: partial packet length(block size)
16 bytes,needed 112 bytes,
في بعض الأحيان، يتم ملاحظة syslog الموضحة هنا أيضا عند محاولة بروتوكول SSH، ولكنه لا يتم طباعته بشكل متناسق:
*Sep 30 20:23:27.598: %AAA-3-ACCT_LOW_MEM_UID_FAIL: AAA unable to create UID for incoming
calls due to insufficient processor memory
يتمثل السبب الرئيسي للمشكلة في حالات انخفاض الذاكرة على الموجه. عند فشل المصادقة والتفويض والمحاسبة (AAA) في تخصيص الذاكرة لإنشاء المعرف الفريد (UID) لجلسة عمل بروتوكول طبقة الأمان (SSH) الواردة، فإنها تشير إلى نفس الفشل كفشل مصادقة AAA حتى ولو لم تتم محاولة المصادقة والتفويض والمحاسبة (AAA). تحدث هذه الحالة عندما تنخفض الذاكرة الحرة للمعالج إلى أقل من "حد الذاكرة المنخفض للمصادقة" AAA، والذي يتم ضبطه بشكل افتراضي على 3٪ من إجمالي الذاكرة ويمكن فحصه باستخدام الأمر show aaa memory. غالبا ما تشاهد هذه المشكلة على النظام الأساسي لموجه خدمات التجميع (ASR) 1001 حيث توجد ذاكرة محدودة على الموجه يمكن استنفادها باستخدام مستوى التحكم الثقيل، مثل جدول بروتوكول العبارة الحدودية الكاملة (BGP). في الطراز ASR 1001، يتم تثبيت ذاكرة DRAM سعة 4 جيجابايت، ولكن بعد انتهاء جميع وحدات المعالجة المركزية (CPU) ومعالجات Linux الأخرى عند بدء تشغيل برنامج Cisco IOS، سيتم ترك ذاكرة التخزين المؤقت سعة 1.1 جيجابايت. بمجرد استنفاد الذاكرة إلى النقطة التي لم يعد بإمكان AAA تخصيص الذاكرة لمعرف المستخدم (UID)، يفشل بروتوكول SSH في العمل.
فكر في بيانات الذاكرة هذه من إثنين من عناوين ASR:
SSH Not Working:
----------------
ASR1#show memory summary
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 7FE150387010 1160982064 1146067400 14914664 14225352 13918620
lsmpi_io 7FE14FB7E1A8 6295128 6294304 824 824 412
SSH Working:
------------
ASR2#show memory summary
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 7FFB6ACB0010 1160982064 1120122056 40860008 29163912 24132068
lsmpi_io 7FFB6A4A71A8 6295128 6294304 824 824 412
من حساب بسيط، على ال ASR غير العامل تكون نسبة الذاكرة الحرة 1.28٪ (14914664 / 1160982064 * 100) من إجمالي الذاكرة المتاحة. أما في طبقة ASR العاملة فتبلغ 3.51٪ (40860008 / 1160982064 * 100)، وهي أعلى بقليل من حد الذاكرة المنخفضة للمصادقة.
من الصعب تحديد هذه المشكلة لأن رسالة ٪AAA-3-ACCT_LOW_MEM_UID_FAILED لا تطبع غالبا عندما يحدث هذا الخطأ بسبب انخفاض حالة الذاكرة. علاوة على ذلك، لا تعتمد الطريقة التي تقوم بها المصادقة والتفويض والمحاسبة (AAA) بحساب حد الذاكرة على الكمية الأولية لذاكرة المعالج المتوفرة على معالج التوجيه (RP)، بل على نسبة مئوية من إجمالي الذاكرة. لذلك، لا يزال يبدو أن هناك الكثير من ذاكرة المعالج المعروضة مجانا في إخراج الأمر show memory summary عندما يحدث ذلك دون الإبلاغ عن حالات فشل تالف.
ملاحظة: تم تصنيف معرف تصحيح الأخطاء من Cisco CSCuj50368 من أجل جعل رسائل خطأ SSH أكثر وضوحا حول السبب الحقيقي لفشل المصادقة.
تتمثل إحدى الطرق للتحقق من أن هذا الأمر يمثل مشكلة بالفعل في النظر إلى إحصائيات ذاكرة AAA:
Router#show aaa memory
Allocator-Name In-use/Allocated Count
----------------------------------------------------------------------------
AAA AttrL Hdr : 0/65888 ( 0%) [ 0] Chunk
AAA AttrL Sub : 0/65888 ( 0%) [ 0] Chunk
AAA DB Elt Chun : 544/65888 ( 0%) [ 4] Chunk
AAA Unique Id Hash Table : 8196/8288 ( 98%) [ 1]
AAA chunk : 0/16936 ( 0%) [ 0] Chunk
AAA chunk : 0/16936 ( 0%) [ 0] Chunk
AAA Interface Struct : 1600/1968 ( 81%) [ 4]
Total allocated: 0.230 Mb, 236 Kb, 241792 bytes
AAA Low Memory Statistics:
__________________________
Authentication low-memory threshold : 3%
Accounting low-memory threshold : 2%
AAA Unique ID Failure : 96
Local server Packet dropped : 0
CoA Packet dropped : 0
PoD Packet dropped :
إذا زاد عدد "فشل معرف AAA الفريد" مع كل محاولة SSH فاشلة، فإن المشكلة تحدث بسبب حالة الذاكرة المنخفضة هذه.
لاستكشاف أخطاء هذه المشكلة وإصلاحها، يجب إتخاذ خطوات أستكشاف أخطاء الذاكرة وإصلاحها القياسية ASR 1000 لعزل السبب. للحصول على مزيد من المعلومات حول كيفية أستكشاف أخطاء الذاكرة وإصلاحها في ASR، راجع نظرة عامة على إستخدام الذاكرة.
الحل
لاستكشاف أخطاء هذه المشكلة وإصلاحها، يجب إتخاذ خطوات أستكشاف أخطاء الموجه القياسية وإصلاحها. تحدد الخطوات ما إذا كانت المشكلة ناجمة عن الاستخدام العادي، وفي هذه الحالة قد يكون هناك ما يبرر ترقية النظام الأساسي/الذاكرة، أو تسريب الذاكرة حيث قد يلزم إجراء مراقبة إضافية للذاكرة واستكشاف الأخطاء وإصلاحها. راجع مكتشف تسريب الذاكرة وتقنيات أستكشاف أخطاء الذاكرة وإصلاحها الشائعة للحصول على مزيد من التفاصيل.
بالنسبة للإصدارات التي لا تحتوي على الإصلاح من معرف تصحيح الأخطاء من Cisco CSCum19502، فإن الحل البديل الأكثر وضوحا هو تمكين وصول Telnet أو وحدة التحكم إلى الموجه، نظرا لتأثير بروتوكول SSH فقط على هذا الحد.
تلميح: يسمح أمر حد ذاكرة AAA بتقليل قيم الحد الفاصل إلى 1٪ كحد أدنى. ومع ذلك، في حين يوفر هذا طريقة مؤقتة لبروتوكول SSH إلى الموجه، فإنه يمكن أن يؤدي إلى آثار أخرى مثل السماح باستخدام ذاكرة المعالج للإفلات بشكل منخفض بالفعل قبل تنبيه المسؤولين. وقد يؤدي هذا إلى توقف العمليات الأكثر أهمية، مثل بروتوكول BGP الذي يستخدم كميات كبيرة من الذاكرة، عن العمل. لذلك يجب إستخدام ذلك بحذر.
كما هو موضح مسبقا، من المعقول تماما أن لا يقوم الموجه بتسريب الذاكرة ولكنه يكتفي بالاشتراك الزائد في الميزات التي تم تمكينها. في هذه الحالة، قد يكون هناك ما يبرر ترقية النظام الأساسي/الذاكرة.