Inleiding
Dit document beschrijft de kwestie op een Cisco IOS® router wanneer Secure Shell (SSH) naar de router soms mislukt met een gemelde storing in de SSH-apparaten voor gebruikersverificatie. Dit probleem doet zich voor zelfs al zijn de ingevoerde gebruikersreferenties correct en de zelfde geloofsbrieven werken correct voor Telnet.
Opmerking: Cisco bug-ID CSCum19502 is ingediend om het gedrag tussen SSH en telnet consistent te maken.
Probleem
Merk op dat, ook al is "debug a Authentication" ingeschakeld, er geen detectie-, autorisatie- en accounting (AAA)-debugs worden afgedrukt om AAA daadwerkelijk te laten zien en de mislukking terug te geven.
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,
Soms wordt ook de hier getoonde syslog waargenomen wanneer SSH wordt geprobeerd, maar deze wordt niet consequent afgedrukt:
*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
De oorzaak van het probleem is lage geheugenomstandigheden op de router. Wanneer AAA er niet in slaagt het geheugen toe te wijzen om de unieke ID (UID) voor de inkomende SSH-sessie te maken, rapporteert het dezelfde fout als een AAA-echtheidsstoring, ook al wordt AAA niet geprobeerd. Deze conditie doet zich voor wanneer het processorvrije geheugen onder de AAA "Verificatie met laag geheugen" valt, die standaard is ingesteld op 3% van het totale geheugen en kan worden gecontroleerd met de opdracht weergeven. Dit probleem wordt vaak gezien op een platform van Aggregation Services Router (ASR) 1001 waar er beperkt geheugen op de router is die met zwaar controlevliegtuig kan worden uitgeput, zoals een tabel met Full Border Gateway Protocol (BGP). Op de ASR 1001 is 4 GB DRAM geïnstalleerd, maar na alle andere CPU’s en Linux-processors is Cisco IOS overgebleven van 1,1 GB. Zodra het geheugen is uitgeput tot het punt dat AAA geheugen niet langer kan toewijzen voor UID, werkt SSH niet meer.
Beschouw deze geheugengegevens van twee ASR's:
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
Uit een simpele berekening blijkt dat het percentage vrij geheugen voor de niet-werkende ASR 1,28% (14914664 / 1160982064 * 100) van het totale beschikbare geheugen is. Voor de werkende ASR is het 3,51% (40860008 / 1160982064 * 100), wat net boven de authenticatiedrempel met weinig geheugen ligt.
Dit probleem is moeilijk te identificeren omdat het bericht %AAA-3-ACCT_LOW_MEM_UID_FAIL vaak niet wordt afgedrukt als deze fout veroorzaakt door de geheugenstoornis. Bovendien is de manier waarop AAA de geheugendrempel berekent niet afhankelijk van de hoeveelheid geheugen van de processor die beschikbaar is bij de routeprocessor (RP), maar eerder van een percentage van het totale geheugen. Daarom is er mogelijk nog steeds een overvloed aan processorgeheugen dat gratis wordt weergegeven in de output van de samenvatting van het geheugen van de show wanneer dit gebeurt zonder gemelde malloc-fouten.
Opmerking: Cisco bug-ID CSCuj50368 is gedeponeerd om SSH-foutmeldingen explicieter te maken over de werkelijke reden voor de echtheidsfout.
Eén manier om te controleren of dit inderdaad het probleem is, is door te kijken naar de AAA-geheugenstatistieken:
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 :
Als bij elke mislukte SSH-poging de toename van "AAA unieke ID-fout" is geregistreerd, wordt het probleem veroorzaakt door deze geheugenstoornis.
Om dit probleem op te lossen, moet de standaard ASR 1000 stappen voor het oplossen van problemen worden genomen om de oorzaak te isoleren. Zie Geheugenoverzicht voor meer informatie over het oplossen van geheugenproblemen bij de ASR.
Oplossing
Om dit probleem op te lossen, moeten de standaard stappen voor het oplossen van problemen in het routergeheugen worden genomen. De stappen isoleren of het probleem het gevolg is van normaal gebruik, in welk geval een platform/geheugenupgrade gerechtvaardigd zou kunnen zijn; of een geheugenlek waar extra geheugencontrole en probleemoplossing vereist zijn. Zie Geheugendetectie en algemene technieken voor het oplossen van geheugenproblemen voor meer informatie.
Voor versies die de oplossing niet hebben van Cisco bug-ID CSCum19502, is de meest voor de hand liggende bewerking het inschakelen van telnet of de console toegang tot de router, omdat alleen SSH door deze drempel wordt beïnvloed.
Tip: Met de opdracht Aa memory threshold kunt u de drempelwaarden tot minimaal 1% beperken. Hoewel dit een tijdelijke manier biedt om SSH te gebruiken voor de router, kan dit echter andere implicaties met zich meebrengen, zoals de vergoeding voor het gebruik van het processorgeheugen om echt laag te blijven vooraleer de toediening wordt gewaarschuwd. Dit zou belangrijker processen kunnen veroorzaken, zoals BGP dat grote hoeveelheden geheugen gebruikt, om niet langer te werken. Daarom is voorzichtigheid geboden.
Zoals eerder uitgelegd, is het volledig plausibel dat de router geen geheugen lekt maar net oversubscript is geplaatst voor de enabled-functies. In dit geval is een platform/geheugenupgrade mogelijk geboden.