Inleiding
Dit document beschrijft het probleem op een Cisco IOS®-router wanneer Secure Shell (SSH) naar de router soms mislukt met een gemelde gebruikersverificatiefout in de SSH-debugs. Dit probleem doet zich voor hoewel de ingevoerde gebruikersreferenties juist zijn en dezelfde referenties correct werken voor Telnet.
Opmerking: Cisco bug ID CSCum19502 is ingediend om het gedrag tussen SSH en Telnet consistent te maken.
Probleem
Merk op dat, hoewel "debug aaa authenticatie" is ingeschakeld, er geen authenticatie, autorisatie en boekhouding (AAA) debugs worden afgedrukt om aan te tonen dat AAA daadwerkelijk wordt aangeroepen en de fout retourneert.
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 de hier weergegeven syslog ook waargenomen wanneer SSH wordt geprobeerd, maar deze wordt niet consistent 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 hoofdoorzaak van het probleem zijn de lage geheugenomstandigheden op de router. Wanneer AAA er niet in slaagt om geheugen toe te wijzen om de unieke ID (UID) voor de binnenkomende SSH-sessie te maken, rapporteert het dezelfde fout als een AAA-verificatiefout, hoewel AAA niet wordt geprobeerd. Deze voorwaarde treedt op wanneer het vrije geheugen van de processor onder de AAA "Authentication low-memory threshold" valt, die standaard is ingesteld op 3% van het totale geheugen en kan worden gecontroleerd met de opdracht show aaa memory. Dit probleem wordt vaak gezien op een Aggregation Services Router (ASR) 1001-platform waar er beperkt geheugen op de router is dat kan worden uitgeput met zwaar controlevliegtuiggebruik, zoals een volledige Border Gateway Protocol (BGP) -tabel. Op de ASR 1001 is er 4GB DRAM geïnstalleerd, maar na alle andere CPU's en Linux-processors opstarten krijgt Cisco IOS de 1,1 GB over. Zodra het geheugen is uitgeput tot het punt dat AAA niet langer geheugen voor UID kan toewijzen, SSH niet meer werkt.
Overweeg 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 eenvoudige berekening blijkt dat op de niet-werkende ASR het percentage vrij geheugen 1,28% (14914664 / 1160982064 * 100) van het totale beschikbare geheugen is. Op de werkende ASR is het 3,51% (40860008 / 1160982064 * 100), wat net boven de authenticatie lage geheugendrempel ligt.
Dit probleem is moeilijk te identificeren omdat het %AAA-3-ACCT_LOW_MEM_UID_FAIL-bericht vaak niet wordt afgedrukt wanneer deze fout optreedt vanwege de lage geheugenconditie. Bovendien is de manier waarop AAA de geheugendrempel berekent niet afhankelijk van de ruwe hoeveelheid processorgeheugen die beschikbaar is op de routeprocessor (RP), maar eerder een percentage van het totale geheugen. Daarom kan er nog steeds schijnbaar veel processorgeheugen als vrij worden weergegeven in de overzichtsopdrachtregeluitvoer voor het weergeven van het geheugen wanneer dit optreedt zonder dat malloc-fouten worden gemeld.
Opmerking: Cisco bug ID CSCuj50368 is gearchiveerd om SSH foutmeldingen explicieter te maken over de echte reden voor de authenticatiefout.
Een manier om te controleren of dit inderdaad het probleem is, is door naar de AAA-geheugenstatistieken te kijken:
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 het aantal "AAA Unique ID Failure" toeneemt bij elke mislukte SSH-poging, wordt het probleem veroorzaakt door deze lage geheugenconditie.
Om dit probleem op te lossen, moeten standaard ASR 1000-geheugenprobleemoplossingsstappen worden genomen om de oorzaak te isoleren. Zie Overzicht van het geheugengebruik voor meer informatie over het oplossen van geheugenproblemen op de ASR.
Oplossing
Om dit probleem op te lossen, moeten standaard stappen voor het oplossen van routergeheugen worden genomen. De stappen isoleren of het probleem te wijten is aan normaal gebruik, in welk geval een upgrade van het platform/geheugen gerechtvaardigd kan zijn; of een geheugenlek waarbij extra geheugenbewaking en probleemoplossing nodig kunnen zijn. Zie Geheugenlekdetector en gebruikelijke technieken voor probleemoplossing voor meer informatie.
Voor versies die niet de oplossing van Cisco bug ID CSCum19502 hebben, is de meest voor de hand liggende oplossing om Telnet- of consoletoegang tot de router in te schakelen, omdat alleen SSH wordt beïnvloed door deze drempel.
Tip: Met de opdracht aaa memory threshold kunt u de drempelwaarden verlagen tot minimaal 1%. Hoewel dit een tijdelijke manier is om SSH naar de router te brengen, kan dit leiden tot andere implicaties, zoals het toestaan van het gebruik van het processorgeheugen om echt laag te vallen voordat beheerders worden gewaarschuwd. Dit kan ertoe leiden dat belangrijkere processen, zoals BGP dat grote hoeveelheden geheugen verbruikt, niet langer werken. Daarom is dit iets dat met voorzichtigheid moet worden gebruikt.
Zoals eerder uitgelegd, is het volledig aannemelijk dat de router geen geheugen lekt, maar gewoon overtekend is voor de functies die zijn ingeschakeld. In dit geval kan een upgrade van het platform/geheugen gerechtvaardigd zijn.