Introducción
Este documento describe el problema en un router Cisco IOS® cuando Secure Shell (SSH) al router a veces falla con un error de autenticación de usuario notificado en los debugs de SSH. Este problema ocurre aunque las credenciales de usuario ingresadas sean correctas y las mismas credenciales funcionen correctamente para Telnet.
Nota: El ID de bug de Cisco CSCum19502 se ha archivado para hacer el comportamiento entre SSH y Telnet consistente.
Problema
Observe en estas depuraciones que aunque la "depuración aaa authentication" está habilitada, no hay depuraciones de Autenticación, Autorización y Contabilización (AAA) que se impriman para mostrar que AAA se invoca 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 que se muestra 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 el mismo error que un error 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 por defecto está configurado en el 3% de la memoria total y se puede verificar con el comando show aaa memory. Este problema se observa a menudo en una plataforma de router de servicios de agregación (ASR) 1001 en la que 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 instalados, pero después de que todas las otras CPU y procesadores Linux inicien Cisco IOS obtiene los 1,1 GB restantes. 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 cálculo simple, en el ASR no operativo, el porcentaje de memoria libre es del 1,28% (14914664 / 1160982064 * 100) de la memoria total disponible. En el ASR en funcionamiento es 3.51% (40860008 / 1160982064 * 100), que está justo por encima del umbral de baja memoria 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 bruta de memoria del procesador disponible en el procesador de ruta (RP), sino de un porcentaje de la memoria total. Por lo tanto, puede que aún haya aparentemente mucha memoria del procesador mostrada como libre en la salida del comando show memory summary cuando esto ocurre sin que se reporten fallas malloc.
Nota: El ID de bug de Cisco CSCuj50368 se ha archivado para hacer que los mensajes de error SSH sean más explícitos sobre la razón real de la falla de autenticación.
Una manera de verificar si este es realmente el problema es mirar 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 "AAA Unique ID Failure" aumenta con cada intento fallido de SSH, el problema es causado por esta condición de memoria baja.
Para resolver este problema, se deben seguir los pasos de resolución de problemas de memoria estándar ASR 1000 para aislar la causa. Para obtener más información sobre cómo resolver problemas de memoria en ASR, vea Información general sobre el uso de memoria.
Solución
Para resolver este problema, se deben seguir los pasos de resolución de problemas de memoria del router estándar. Los pasos aíslan si el problema se debe al uso normal, en cuyo caso podría estar justificada una actualización de la plataforma/memoria; o una pérdida de memoria en la que podría ser necesaria una supervisión adicional de la memoria y la resolución de problemas. Consulte Detector de pérdida 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 bug Cisco CSCum19502 , la solución alternativa más obvia es habilitar el acceso Telnet o de consola al router, ya que solamente 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, aunque esto proporciona una manera temporal de conectar SSH con el router, puede conducir a otras implicaciones, como que la capacidad de uso de la memoria del procesador caiga muy bajo antes de que los administradores sean alertados. Esto podría hacer que procesos más importantes, como BGP, que consume grandes cantidades de memoria, dejen de funcionar. Por lo tanto, esto es algo que debe utilizarse con precaución.
Como se explicó anteriormente, es completamente plausible que el router no pierda memoria, sino que simplemente esté sobresuscrito para las funciones habilitadas. En este caso, se puede garantizar una actualización de la plataforma/memoria.