Sommario

Introduzione

Problema

Soluzione

Introduzione

In questo documento viene descritto il problema su un router Cisco IOS® quando il protocollo SSH (Secure Shell) sul router a volte ha esito negativo con un errore di autenticazione dell'utente segnalato nei debug SSH. Questo problema si verifica anche se le credenziali utente immesse sono corrette e le stesse credenziali funzionano correttamente per Telnet.

Nota: Per rendere coerente il comportamento tra SSH e Telnet, consultare l'ID bug Cisco CSCum19502.

Problema

In questi debug si noti che, anche se l'opzione "debug aaa authentication" è abilitata, non vengono stampati debug di autenticazione, autorizzazione e accounting (AAA) per indicare che il processo AAA è stato effettivamente richiamato e restituisce l'errore.

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 volte il syslog mostrato di seguito viene osservato anche quando si cerca di eseguire SSH, ma non viene stampato in modo coerente:

*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 principale del problema è una condizione di memoria insufficiente sul router. Quando il server AAA non riesce ad allocare memoria per creare l'ID univoco (UID) per la sessione SSH in arrivo, viene restituito lo stesso errore di un errore di autenticazione AAA, anche se non si tenta di eseguire il processo. Questa condizione si verifica quando la memoria libera del processore scende al di sotto della "soglia di memoria insufficiente per l'autenticazione" AAA, che per impostazione predefinita è impostata sul 3% della memoria totale e può essere controllata con il comando show aaa memory. Questo problema si verifica spesso su una piattaforma ASR (Aggregation Services Router) 1001 in cui la memoria sul router è limitata e che può essere esaurita in caso di uso elevato del control plane, ad esempio una tabella BGP (Border Gateway Protocol) completa. Sull'ASR 1001 sono installati 4 GB di DRAM, ma dopo l'avvio di tutte le altre CPU e processori Linux, Cisco IOS ottiene gli 1,1 GB rimanenti. Una volta esaurita la memoria al punto che AAA non può più allocare memoria per UID, SSH non funziona.

Considerare i seguenti dati di memoria da due 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

Da un semplice calcolo, sull'ASR non funzionante la percentuale di memoria libera è 1,28% (14914664 / 1160982064 * 100) della memoria totale disponibile. Sull'ASR funzionante è 3,51% (40860008 / 1160982064 * 100), che è appena al di sopra della soglia di memoria insufficiente per l'autenticazione.

Questo problema è difficile da identificare perché il messaggio %AAA-3-ACCT_LOW_MEM_UID_FAIL spesso non viene stampato quando si verifica questo errore a causa della condizione di memoria insufficiente. Inoltre, il modo in cui AAA calcola la soglia della memoria non dipende dalla quantità raw di memoria del processore disponibile sul processore di routing (RP), ma piuttosto da una percentuale della memoria totale. Pertanto, potrebbe essere ancora presente una quantità di memoria del processore indicata come libera nell'output del comando show memory summary quando questo si verifica senza errori di malloc segnalati.

Nota: L'ID bug Cisco CSCuj50368 è stato archiviato per rendere più espliciti i messaggi di errore SSH sulla causa reale dell'errore di autenticazione.

Un modo per verificare se questo è effettivamente il problema è guardare le statistiche della 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                      :

Se il numero di errori di ID univoco AAA aumenta a ogni tentativo SSH non riuscito, il problema è causato da questa condizione di memoria insufficiente.

Per risolvere questo problema, è necessario eseguire delle operazioni di risoluzione dei problemi di memoria ASR 1000 standard per isolare la causa. Per ulteriori informazioni su come risolvere i problemi relativi alla memoria sull'ASR, vedere Cenni preliminari sull'utilizzo della memoria.

Soluzione

Per risolvere questo problema, è necessario eseguire le procedure standard di risoluzione dei problemi relativi alla memoria del router. Le fasi isolano se il problema è dovuto all'uso normale, nel qual caso potrebbe essere garantito un aggiornamento della piattaforma/memoria; o una perdita di memoria in cui potrebbero essere necessari monitoraggio della memoria e risoluzione dei problemi. Per ulteriori informazioni, vedere Rilevatore di perdita di memoria e tecniche comuni di risoluzione dei problemi relativi alla memoria.

Per le versioni che non dispongono della funzionalità di correzione fornita dall'ID bug Cisco CSCum19502, la soluzione più ovvia è abilitare l'accesso Telnet o console al router, in quanto solo SSH è interessato da questa soglia.

Suggerimento: Il comando aaa memory threshold permette di ridurre i valori di soglia ad un minimo dell'1%. Tuttavia, anche se questo fornisce un modo temporaneo di connettersi al router SSH, può causare altre implicazioni, ad esempio il fatto che l'utilizzo della memoria del processore possa diminuire sensibilmente prima che gli amministratori vengano avvisati. Ciò potrebbe causare il blocco di processi più importanti, ad esempio BGP che utilizza grandi quantità di memoria. Pertanto, è necessario procedere con cautela.

Come spiegato in precedenza, è assolutamente plausibile che il router non perda memoria ma abbia solo una sottoscrizione eccessiva per le funzionalità abilitate. In questo caso potrebbe essere garantito un aggiornamento della piattaforma o della memoria.