Contenu

Introduction

Problème

Solution

Introduction

Ce document décrit le problème sur un routeur Cisco IOS® lorsque Secure Shell (SSH) échoue parfois avec un échec d'authentification de l'utilisateur signalé dans les débogages SSH. Ce problème se produit même si les informations d'identification de l'utilisateur entrées sont correctes et que les mêmes informations d'identification fonctionnent correctement pour Telnet.

Note: L'ID de bogue Cisco CSCum19502 a été classé afin de rendre le comportement entre SSH et Telnet cohérent.

Problème

Notez dans ces débogages que même si « debug aaa authentication » est activé, aucun débogage AAA (Authentication, Authorization, and Accounting) n'est imprimé pour indiquer que AAA est effectivement appelé et retourne l'échec.

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,

Parfois, le syslog présenté ici est également observé lors de la tentative de SSH, mais il n'est pas imprimé de manière cohérente :

*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

La cause première du problème est le manque de mémoire sur le routeur. Quand AAA ne parvient pas à allouer de la mémoire pour créer l'ID unique (UID) pour la session SSH entrante, il signale la même erreur qu'une erreur d'authentification AAA même si AAA n'est pas tenté. Cette condition se produit lorsque la mémoire libre du processeur tombe en dessous du seuil de mémoire faible de l'authentification AAA, qui par défaut est défini à 3% de la mémoire totale et peut être vérifiée avec la commande show aaa memory. Ce problème est souvent observé sur une plate-forme ASR (Aggregation Services Router) 1001 où il y a une mémoire limitée sur le routeur qui peut être épuisée avec une utilisation intensive du plan de contrôle, comme une table BGP (Border Gateway Protocol) complète. Sur l'ASR 1001, 4 Go de DRAM sont installés, mais après que tous les autres processeurs et processeurs Linux démarrent, Cisco IOS obtient le 1,1 Go restant. Une fois la mémoire épuisée au point que AAA ne peut plus allouer de mémoire pour UID, SSH ne fonctionne plus.

Considérez les données de mémoire de deux 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

À partir d'un calcul simple, sur le ASR non fonctionnel, le pourcentage de mémoire libre est de 1,28% (14914664 / 1160982064 * 100) de la mémoire totale disponible. Sur l'ASR de travail il est de 3,51% (40860008 / 1160982064 * 100), qui est juste au-dessus du seuil de faible mémoire d'authentification.

Ce problème est difficile à identifier car le message %AAA-3-ACCT_LOW_MEM_UID_FAIL n'est souvent pas imprimé lorsque cette erreur se produit en raison d'une condition de mémoire insuffisante. De plus, la manière dont AAA calcule le seuil de mémoire ne dépend pas de la quantité brute de mémoire processeur disponible sur le processeur de routage (RP), mais plutôt d'un pourcentage de la mémoire totale. Par conséquent, il peut toujours y avoir une quantité suffisante de mémoire du processeur affichée comme libre dans la sortie de la commande show memory summary lorsque cela se produit sans défaillance de malloc signalée.

Note: L'ID de bogue Cisco CSCuj50368 a été enregistré afin de rendre les messages d'erreur SSH plus explicites sur la véritable raison de l'échec de l'authentification.

Une façon de vérifier si c'est bien le problème est de regarder les statistiques de mémoire 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                      :

Si le nombre d'échecs d'ID unique AAA s'incrémente avec chaque échec de tentative SSH, le problème est causé par cette condition de mémoire insuffisante.

Afin de résoudre ce problème, des étapes de dépannage de mémoire ASR 1000 standard doivent être prises afin d'isoler la cause. Pour plus d'informations sur la résolution des problèmes de mémoire sur l'ASR, consultez Vue d'ensemble de l'utilisation de la mémoire.

Solution

Afin de résoudre ce problème, des étapes standard de dépannage de la mémoire du routeur doivent être prises. Les étapes permettent de déterminer si le problème est dû à une utilisation normale, auquel cas une mise à niveau de la plate-forme/de la mémoire peut être justifiée ; ou une fuite de mémoire où une surveillance et un dépannage supplémentaires de la mémoire peuvent être nécessaires. Pour plus d'informations, consultez Memory Leak Detector et les techniques courantes de dépannage de la mémoire.

Pour les versions qui n'ont pas le correctif de l'ID de bogue Cisco CSCum19502 , la solution la plus évidente consiste à activer l'accès Telnet ou console au routeur, puisque seul SSH est affecté par ce seuil.

Astuce : La commande aaa memory threshold vous permet de réduire les valeurs de seuil à un minimum de 1 %. Cependant, bien que cela fournisse un moyen temporaire de SSH au routeur, cela peut entraîner d'autres conséquences, comme la réduction de l'utilisation de la mémoire du processeur à un niveau très bas avant que les administrateurs ne soient avertis. Cela pourrait entraîner la fin du fonctionnement de processus plus importants, tels que BGP qui consomme une grande quantité de mémoire. C'est pourquoi il convient de l'utiliser avec prudence.

Comme expliqué précédemment, il est tout à fait plausible que le routeur ne fuie pas de mémoire, mais qu'il soit simplement surabonné pour les fonctionnalités activées. Dans ce cas, une mise à niveau de la plate-forme/de la mémoire peut être justifiée.