이러한 인증이 급증하여 일부 SSH 사용자 인증이 실패합니다. 일련의 호스트에서

CentOS 7.3을 실행하는 20 개의 호스트 클러스터로 작업하고 있습니다.

다음을 확인하기 위해 자동 테스트를 작성하려고합니다.

  1. 예상되는 네트워크 연결이 이루어졌습니다
  2. SSH 싱글 사인온 (SSO) 솔루션이 작동 중입니다.

예상되는 네트워크 연결은 매우 간단합니다. 단일 플랫 서브넷입니다. 모든 호스트는 다른 모든 호스트에 접근 할 수 있어야합니다.

SSH SSO 솔루션 (FreeIPA)은 Kerberos를 사용하여 사용자를 인증하고 SSH 공개 키를 사용하여 호스트를 인증합니다. 사용자의 TGT (Kerberos Ticket Granting Ticket)는 사용자가 SSH를 사용하여 연결하는 모든 호스트로 전달되도록 설정되어 있습니다.

테스트는 매우 간단합니다.

모든 호스트가 SSH를 사용하여 다른 모든 호스트에서 원격 명령으로 호스트 이름 을 실행하도록하십시오 .

이를 위해 pdsh 라는 유틸리티를 사용합니다 .

간단히 말해서이 유틸리티는 SSH를 사용하여 일련의 호스트에서 원격 명령을 실행합니다. ssh 명령을 실행하여 각 호스트와 해당 스레드 각각에 스레드를 생성하여 병렬로 수행합니다 .

이 명령을 사용하는 방법은 다음과 같습니다. 20 개의 클러스터 호스트 중 하나가 아닌 머신에서 다음 명령을 실행합니다.

pdsh -g all 'pdsh -g all "hostname"'

-g all 은 모든 클러스터 호스트에서 원격 명령을 실행하도록 지정합니다. 언급했듯이 20 개의 클러스터 호스트가 있습니다.

모든 원격 호스트에서 실행되는 명령은 다음과 같습니다.

pdsh -g all "hostname"

따라서 위에서 언급 한 것처럼 모든 호스트는 SSH를 통해 다른 모든 호스트에서 “hostname”명령을 원격 명령으로 실행하려고합니다.

따라서 이로 인해 20 개의 호출 (클러스터 호스트 당 하나씩)이 발생합니다.

ssh 'pdsh -g all "hostname"'

결과적으로 20 * 20 = 400 호출은 다음과 같습니다.

ssh <hostname> hostname

따라서 매우 짧은 시간 내에 총 20 + 400 = 420 SSH 인증이 발생합니다.

내가보고있는 문제는 소수의 인증 실패입니다. 장애가 발생한 호스트는 임의적입니다. 운율이나 이유가 없습니다. 실패는 다음과 같습니다.

host-5: host-3: Permission denied, please try again.
host-5: host-3: Permission denied, please try again.
host-5: host-3: Received disconnect from UNKNOWN: 2: Too many authentication failures for myuser
host-5: pdsh@host-5: host-3: ssh exited with exit code 255

인증 할 여러 세션이 동시에 존재할 수 있도록 / etc / ssh / sshd_config 에 다음을 구성했습니다 .

MaxStartups 500:30:600

이 방법은 너무 과도합니다. 클러스터 전체에서 진행되는 인증 수를 설명하지만 지정된 호스트에서 발생하는 인증 수만 설명하면됩니다. 따라서 문제는 다른 곳에 있다고 생각합니다.

요약하자면, 매우 짧은 기간 동안 20 개의 호스트 클러스터에서 Kerberos를 통해 수많은 SSH 사용자 인증이 이루어지고 있습니다. 임의의 사용자 인증 실패가 발생했습니다.

이러한 사용자 인증이 실패하는 이유는 무엇입니까?



답변

같은 호스트에 SSH 세션을 다시 열면 제어 마스터 연결을 사용하는 것이 좋습니다. 기본적으로 인증 된 세션은 클라이언트와 서버가 인증을 반복하지 않도록 유지됩니다.

참조 : ssh_config (5)-ControlMaster


답변