소개
이 문서에서는 라우터에 대한 SSH(Secure Shell)가 SSH 디버그에서 보고된 사용자 인증 실패와 함께 때때로 실패하는 경우 Cisco IOS® 라우터 문제를 설명합니다. 이 문제는 입력한 사용자 자격 증명이 올바르고 텔넷에서 동일한 자격 증명이 올바르게 작동하더라도 발생합니다.
참고: SSH와 텔넷 간의 동작을 일관되게 하기 위해 Cisco 버그 ID CSCum19502가 제출되었습니다.
문제
이 디버그에서는 "debug aaa authentication"이 활성화되어 있어도 AAA가 실제로 호출되어 오류를 반환한다는 것을 나타내기 위해 인쇄되는 AAA(Authentication, Authorization, and Accounting) 디버그가 없습니다.
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가 시도될 때도 여기에 표시된 syslog가 관찰되지만 일관성 있게 인쇄되지는 않습니다.
*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 세션에 대한 UID(Unique ID)를 생성하기 위해 메모리를 할당하지 못하면 AAA가 시도되지 않더라도 AAA 인증 실패와 동일한 실패를 보고합니다. 이 조건은 프로세서 여유 메모리가 AAA "Authentication low-memory threshold(인증 메모리 부족 임계값)" 아래로 떨어질 때 발생합니다. 이 임계값은 기본적으로 총 메모리의 3%로 설정되며 show aaa memory 명령으로 확인할 수 있습니다. 이 문제는 ASR(Aggregation Services Router) 1001 플랫폼에서 자주 나타나며, 이 경우 전체 BGP(Border Gateway Protocol) 테이블과 같이 컨트롤 플레인을 많이 사용할 경우 소진될 수 있는 제한된 메모리가 라우터에 있습니다. ASR 1001에는 4GB의 DRAM이 설치되어 있지만 다른 모든 CPU 및 Linux 프로세서가 부팅된 후 Cisco IOS는 1.1GB를 남겨둡니다. 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(Route Processor)에서 사용할 수 있는 프로세서 메모리의 원시 양에 따라 달라지는 것이 아니라 전체 메모리의 백분율에 따라 달라집니다. 따라서 이 오류가 보고된 malloc 오류 없이 발생할 때 show memory summary 명령 출력에서 여유로 표시된 프로세서 메모리가 여전히 많아 보일 수 있습니다.
참고: 인증 실패의 실제 이유에 대한 SSH 오류 메시지를 보다 명확하게 만들기 위해 Cisco 버그 ID CSCuj50368가 제출되었습니다.
이것이 실제로 문제인지 확인하는 한 가지 방법은 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 :
실패한 SSH 시도마다 "AAA Unique ID Failure(AAA 고유 ID 실패)" 수가 증가하는 경우 이 문제는 메모리 부족 상태로 인해 발생합니다.
이 문제를 해결하려면 원인을 격리하기 위해 표준 ASR 1000 메모리 문제 해결 단계를 수행해야 합니다. ASR의 메모리 문제를 해결하는 방법에 대한 자세한 내용은 메모리 사용 개요를 참조하십시오.
솔루션
이 문제를 해결하려면 표준 라우터 메모리 문제 해결 단계를 수행해야 합니다. 이 단계에서는 문제가 정상적인 사용으로 인한 것인지 격리합니다. 이 경우 플랫폼/메모리 업그레이드가 보장될 수 있습니다. 추가 메모리 모니터링 및 문제 해결이 필요할 수 있는 메모리 누수. 자세한 내용은 메모리 누수 탐지기 및 일반 메모리 문제 해결 기술을 참조하십시오.
Cisco 버그 ID CSCum19502의 수정 사항이 없는 버전의 경우, SSH만 이 임계값의 영향을 받으므로 가장 분명한 해결 방법은 라우터에 대한 텔넷 또는 콘솔 액세스를 활성화하는 것입니다.
팁: aaa memory threshold 명령을 사용하면 임계값을 최소 1%로 줄일 수 있습니다. 그러나 이렇게 하면 일시적으로 라우터에 SSH를 할당할 수 있는 방법이 제공되지만, 이로 인해 관리자에게 경고하기 전에 프로세서 메모리 사용률이 매우 낮아지는 등의 다른 문제가 발생할 수 있습니다. 이로 인해 대용량 메모리를 사용하는 BGP와 같은 더 중요한 프로세스가 더 이상 작동하지 않을 수 있습니다. 따라서 이것은 신중하게 사용해야 할 것이다.
앞에서 설명한 것처럼 라우터가 메모리를 유출하지 않고 활성화된 기능에 대해 초과 서브스크립션된 것일 수 있습니다. 이 경우 플랫폼/메모리 업그레이드가 보장될 수 있습니다.