Einleitung
In diesem Dokument wird das Problem auf einem Cisco IOS®-Router beschrieben, wenn Secure Shell (SSH) zum Router manchmal fehlschlägt, und ein Fehler bei der Benutzerauthentifizierung in den SSH-Debugs gemeldet wird. Dieses Problem tritt auf, obwohl die eingegebenen Anmeldeinformationen richtig sind und dieselben Anmeldeinformationen für Telnet richtig funktionieren.
Anmerkung: Die Cisco Bug-ID CSCum19502 wurde abgelegt, um ein konsistentes Verhalten zwischen SSH und Telnet zu erreichen.
Problem
Beachten Sie bei diesen Debugs, dass zwar die Debug-AAA-Authentifizierung aktiviert ist, dass aber keine AAA-Debugs (Authentication, Authorization, and Accounting) ausgegeben werden, um anzuzeigen, dass AAA tatsächlich aufgerufen wird, und dass der Fehler zurückgegeben wird.
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,
Manchmal wird das hier gezeigte Syslog auch bei einem SSH-Versuch beobachtet, es wird jedoch nicht konsistent gedruckt:
*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
Die Ursache des Problems liegt in einem niedrigen Speicherbedarf auf dem Router. Wenn AAA keinen Speicher für die Erstellung der Unique ID (UID) für die eingehende SSH-Sitzung zuweist, meldet es denselben Fehler wie eine AAA-Authentifizierung, obwohl kein AAA-Versuch unternommen wurde. Diese Bedingung tritt auf, wenn der prozessorfreie Speicher unter den AAA-Schwellenwert "Authentication low-memory threshold" fällt, der standardmäßig auf 3 % des Gesamtspeichers festgelegt ist und mit dem Befehl show aaa memory überprüft werden kann. Dieses Problem tritt häufig bei Aggregation Services Router (ASR) 1001-Plattformen auf, bei denen der Arbeitsspeicher des Routers begrenzt ist und bei starker Nutzung der Kontrollebene, z. B. einer vollständigen Border Gateway Protocol (BGP)-Tabelle, erschöpft sein kann. Auf dem ASR 1001 sind 4 GB DRAM installiert, aber nachdem alle anderen CPUs und Linux-Prozessoren gebootet haben, erhält Cisco IOS die verbleibenden 1,1 GB. Sobald der Speicher so weit erschöpft ist, dass AAA keinen Speicher mehr für UID zuweisen kann, funktioniert SSH nicht mehr.
Betrachten Sie diese Speicherdaten von zwei ASRs:
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
Nach einer einfachen Berechnung beträgt der Anteil des freien Speichers an der nicht funktionierenden ASR 1,28 % (14914664/1160982064 * 100) des insgesamt verfügbaren Speichers. Auf dem funktionierenden ASR liegt er bei 3,51 % (40860008/1160982064 * 100), was knapp über dem Schwellenwert für niedrige Speicherwerte für die Authentifizierung liegt.
Dieses Problem ist schwer zu identifizieren, da die Meldung %AAA-3-ACCT_LOW_MEM_UID_FAIL aufgrund des niedrigen Speicherplatzes oft nicht gedruckt wird. Außerdem hängt die Art und Weise, wie AAA den Speicherschwellenwert berechnet, nicht von der Rohgröße des Prozessorspeichers ab, der auf dem Routingprozessor (RP) verfügbar ist, sondern von einem Prozentsatz des Gesamtspeichers. Daher kann es sein, dass in der Ausgabe des Befehls show memory summary scheinbar immer noch viel Prozessorspeicher als frei angezeigt wird, wenn dies ohne gemeldete Malloc-Fehler geschieht.
Anmerkung: Die Cisco Bug-ID CSCuj50368 wurde hinterlegt, um SSH-Fehlermeldungen bezüglich des wirklichen Grundes für den Authentifizierungsfehler zu präzisieren.
Eine Möglichkeit, dies zu überprüfen, besteht darin, die AAA-Speicherstatistiken zu überprüfen:
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 :
Wenn die Anzahl "AAA Unique ID Failure" mit jedem fehlgeschlagenen SSH-Versuch erhöht wird, wird das Problem durch diesen Zustand niedrigen Speichers verursacht.
Um dieses Problem zu beheben, sollten standardmäßige Fehlerbehebungsschritte für den ASR 1000-Speicher durchgeführt werden, um die Ursache zu identifizieren. Weitere Informationen zur Behebung von Speicherproblemen auf dem ASR finden Sie unter Übersicht über die Speichernutzung.
Lösung
Um dieses Problem zu beheben, sollten Sie die üblichen Schritte zur Fehlerbehebung im Router-Speicher durchführen. In den Schritten wird ermittelt, ob das Problem auf die normale Nutzung zurückzuführen ist. In diesem Fall ist möglicherweise ein Upgrade der Plattform/des Speichers erforderlich. oder ein Speicherleck, bei dem unter Umständen zusätzliche Speicherüberwachung und Fehlerbehebung erforderlich ist. Weitere Informationen finden Sie unter Memory Leak Detector und unter Fehlerbehebungstechniken für Speicher.
Bei Versionen, die nicht die Fehlerbehebung der Cisco Bug-ID CSCum19502 aufweisen, besteht die naheliegendste Problemumgehung darin, den Telnet- oder Konsolenzugriff auf den Router zu aktivieren, da nur SSH von diesem Schwellenwert betroffen ist.
Tipp: Mit dem Befehl aaa memory threshold können Sie die Schwellenwerte auf mindestens 1 % reduzieren. Dies stellt zwar eine vorübergehende Möglichkeit für SSH zum Router dar, kann jedoch andere Auswirkungen haben, z. B. dass die Prozessorspeichernutzung sehr gering ist, bevor Administratoren benachrichtigt werden. Dies kann dazu führen, dass wichtigere Prozesse wie BGP, das große Mengen an Arbeitsspeicher belegt, nicht mehr funktionieren. Daher ist dies etwas, das mit Vorsicht verwendet werden sollte.
Wie bereits erläutert, ist es durchaus plausibel, dass der Router keinen Speicher verlässt, sondern für die aktivierten Funktionen einfach überbelegt ist. In diesem Fall ist möglicherweise ein Upgrade der Plattform/des Speichers erforderlich.