المحتويات

المقدمة

المشكلة

الحل

المقدمة

يصف هذا المستند المشكلة على موجه 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 الذي يستخدم كميات كبيرة من الذاكرة، عن العمل. لذلك يجب إستخدام ذلك بحذر.

كما هو موضح مسبقا، من المعقول تماما أن لا يقوم الموجه بتسريب الذاكرة ولكنه يكتفي بالاشتراك الزائد في الميزات التي تم تمكينها. في هذه الحالة، قد يكون هناك ما يبرر ترقية النظام الأساسي/الذاكرة.