目錄

簡介

問題

解決方案

簡介

本檔案將說明Cisco IOS®路由器上的問題，當Secure Shell(SSH)連線到路由器時有時會失敗，並在SSH調試中報告使用者驗證失敗。即使輸入的使用者憑證正確且相同的憑證能正確用於Telnet，也會發生此問題。

附註：思科錯誤ID CSCum19502已失敗，以便使SSH和Telnet之間的行為保持一致。

問題

請注意，在這些調試中，即使啟用了「debug aaa authentication」，也不會列印驗證、授權和記帳(AAA)調試來顯示實際呼叫了AAA並返回了故障。

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,

有時，在嘗試使用SSH時也會看到此處顯示的系統日誌，但它不會一直列印：

*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

問題的根本原因是路由器的記憶體不足。當AAA無法分配記憶體為傳入SSH會話建立唯一ID(UID)時，即使未嘗試AAA，也會報告與AAA身份驗證失敗相同的故障。當處理器可用記憶體低於AAA「驗證低記憶體閾值」時，就會發生此情況，預設設定為總記憶體的3%，可以使用show aaa memory 命令檢查。在聚合服務路由器(ASR)1001平台上經常出現此問題，因為路由器上的內存有限，而使用繁重的控制平面(如完全邊界網關協定(BGP)表)時可能會耗盡記憶體。在ASR 1001上安裝了4GB的DRAM，但在所有其他CPU和Linux處理器啟動後，Cisco IOS會獲得1.1 GB的剩餘空間。一旦記憶體耗盡，AAA無法再為UID分配記憶體，SSH便無法工作。

請考慮來自兩個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

根據簡單的計算，在非工作ASR上，可用記憶體的百分比是總可用記憶體的1.28%(14914664 / 1160982064 * 100)。在工作ASR上為3.51%(40860008 / 1160982064 * 100)，剛好高於身份驗證低記憶體閾值。

這個問題很難識別，因為當由於記憶體不足而發生此錯誤時，通常不會列印%AAA-3-ACCT_LOW_MEM_UID_FAIL消息。此外，AAA計算記憶體閾值的方式並不依賴於路由處理器(RP)上可用的處理器記憶體的原始量，而是依賴於總記憶體的百分比。因此，如果發生這種情況，並且未報告任何malloc故障，則在show memory summary命令輸出中可能仍然會有大量處理器記憶體顯示為可用。

附註：思科錯誤ID CSCuj50368 已失敗，以便使SSH錯誤訊息能更清楚說明驗證失敗的實際原因。

要驗證這是否確實有問題，一種方法是檢視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                      :

如果「AAA Unique ID Failure」計數隨著每次失敗的SSH嘗試遞增，則問題是由此記憶體不足情況引起的。

為了對此問題進行故障排除，應採取標準的ASR 1000記憶體故障排除步驟以查明原因。有關如何對ASR上的記憶體問題進行故障排除的詳細資訊，請參閱記憶體使用率概述。

解決方案

為了對此問題進行故障排除，應採取標準的路由器記憶體故障排除步驟。這些步驟可確定問題是否由正常使用引起，在這種情況下，可能需要平台/記憶體升級；或記憶體洩漏，可能需要額外的記憶體監控和故障排除。如需詳細資訊，請參閱記憶體洩漏偵測器和常見記憶體疑難排解技巧。

對於沒有思科錯誤ID CSCum19502修復程式的版本，最明顯的解決方法是啟用對路由器的Telnet或控制檯訪問，因為只有SSH受此閾值影響。

提示：aaa memory threshold命令允許您將閾值降低到最小1%。但是，雖然這提供了到路由器的SSH臨時方法，但可能會導致其它問題，例如允許處理器記憶體使用率在管理員收到警報之前降低非常低。這可能會導致更重要的進程（例如耗盡大量記憶體的BGP）不再工作。因此，應謹慎使用這種方法。

如前所述，路由器不洩漏記憶體，只是對啟用的功能超額使用是完全合理的。在這種情況下，可能需要平台/記憶體升級。