인증 폭주로 인해 일부 SSH 사용자 인증이 실패함

인증 폭주로 인해 일부 SSH 사용자 인증이 실패함

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

다음 사항을 확인하기 위해 자동화된 테스트를 만들려고 합니다.

  1. 예상되는 네트워크 연결이 제대로 이루어졌습니다.
  2. SSH SSO(Single Sign On) 솔루션이 작동 중입니다.

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

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

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

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

이를 위해 저는 다음과 같은 유틸리티를 사용합니다.pdsh.

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

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

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

-g 모두모든 클러스터 호스트에서 원격 명령이 실행되어야 함을 지정합니다. 언급한 대로 클러스터 호스트가 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 사용자 인증이 발생했습니다. 사용자 인증에 무작위 실패가 발생하고 있습니다.

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

답변1

동일한 호스트에 대한 SSH 세션을 다시 여는 경우 제어 마스터 연결을 사용하는 것이 좋습니다. 기본적으로 인증된 세션은 반복 인증을 피하면서 클라이언트와 서버에 의해 유지됩니다.

또한보십시오:ssh_config(5) -- ControlMaster

관련 정보