Introducción
Este documento describe el problema en un router Cisco IOS® cuando Secure Shell (SSH) al router a veces falla con una falla de autenticación de usuario informada en las depuraciones SSH. Este problema ocurre aunque las credenciales de usuario introducidas sean correctas y las mismas credenciales funcionen correctamente para Telnet.
Nota: Se ha registrado el ID de bug Cisco CSCum19502 para hacer que el comportamiento entre SSH y Telnet sea consistente.
Problema
Tenga en cuenta en estas depuraciones que, aunque "debug aaa authentication" esté habilitada, no se están imprimiendo depuraciones de autenticación, autorización y contabilidad (AAA) para mostrar que se invoca AAA realmente y devuelve la falla.
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,
A veces el syslog mostrado aquí también se observa cuando se intenta SSH, pero no se imprime consistentemente:
*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 causa raíz del problema son las condiciones de memoria baja en el router. Cuando AAA no puede asignar memoria para crear el ID único (UID) para la sesión SSH entrante, informa del mismo error que una falla de autenticación AAA aunque no se intente AAA. Esta condición ocurre cuando la memoria libre del procesador cae por debajo del "umbral de memoria baja de autenticación" AAA, que de forma predeterminada se establece en 3% de la memoria total y se puede verificar con el comando show aaa memory. Este problema se observa a menudo en una plataforma 1001 de router de servicios de agregación (ASR) donde hay memoria limitada en el router que se puede agotar con un uso intensivo del plano de control, como una tabla completa de protocolo de gateway fronterizo (BGP). En el ASR 1001 hay 4 GB de DRAM instalada, pero después de que todas las otras CPU y los procesadores Linux arranquen, Cisco IOS obtiene 1,1 GB restante. Una vez que se agota la memoria hasta el punto de que AAA ya no puede asignar memoria para UID, SSH no funciona.
Considere estos datos de memoria de dos 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
A partir de un simple cálculo, en el ASR que no funciona, el porcentaje de memoria libre es del 1,28% (14914664 / 1160982064 * 100) de la memoria disponible total. En el ASR en funcionamiento es del 3,51% (40860008 / 1160982064 * 100), que está justo por encima del umbral de memoria baja de autenticación.
Este problema es difícil de identificar porque el mensaje %AAA-3-ACCT_LOW_MEM_UID_FAIL a menudo no se imprime cuando se produce este error debido a la condición de memoria baja. Además, la forma en que AAA calcula el umbral de memoria no depende de la cantidad de memoria sin procesar disponible en el procesador de routing (RP), sino más bien de un porcentaje de la memoria total. Por lo tanto, parece que todavía puede haber mucha memoria del procesador mostrada como libre en el resultado del comando show memory summary cuando esto ocurre sin que se notifiquen fallas malloc.
Nota: Se ha registrado el ID de bug Cisco CSCuj50368 para hacer que los mensajes de error SSH sean más explícitos sobre la verdadera razón de la falla de autenticación.
Una manera de verificar si este es realmente el problema es ver las estadísticas de memoria 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 el conteo "Falla de ID única AAA" aumenta con cada intento fallido de SSH, el problema es causado por esta condición de memoria baja.
Para resolver este problema, se deben tomar los pasos estándar de troubleshooting de la memoria ASR 1000 para aislar la causa. Para obtener más información sobre cómo resolver problemas de memoria en el ASR, vea Descripción General del Uso de la Memoria.
Solución
Para resolver este problema, se deben tomar los pasos estándar de troubleshooting de la memoria del router. Los pasos aíslan si el problema se debe al uso normal, en cuyo caso se podría justificar una actualización de la plataforma/memoria; o una pérdida de memoria en la que se requiera supervisión adicional de memoria y resolución de problemas. Consulte Detector de fugas de memoria y técnicas comunes de resolución de problemas de memoria para obtener más detalles.
Para las versiones que no tienen la corrección del Id. de error de Cisco CSCum19502 , la solución alternativa más obvia es habilitar el acceso Telnet o de la consola al router, ya que sólo SSH se ve afectado por este umbral.
Consejo: El comando aaa memory threshold le permite reducir los valores de umbral a un mínimo de 1%. Sin embargo, mientras esto proporciona una manera temporal de SSH al router, puede llevar a otras implicaciones como la asignación de utilización de la memoria del procesador para caer realmente bajo antes de que los administradores sean alertados. Esto podría hacer que los procesos más importantes, como BGP que utiliza grandes cantidades de memoria, dejen de funcionar. Por lo tanto, esto es algo que debería usarse con precaución.
Como se ha explicado anteriormente, es completamente verosímil que el router no pierda memoria sino que simplemente esté sobresuscrito para las funciones habilitadas. En este caso, puede estar justificada una actualización de la plataforma/memoria.