SSH에 접속시, "Too many authentication failures" 에러 해결방법

SSH에 접속시, "Too many authentication failures" 에러 해결방법
> ssh [email protected]

Received disconnect from exampledomain.com port 22:2: Too many authentication failures
Disconnected from exampledomain.com port 22

새로운 Linux 환경을 구축하고 다른 환경에서 SSH로 접속하려고 할 때, 위와 같은 에러가 나오면 당황스러우면서도 의욕이 내려가죠. 해당 에러의 해결 방법을 알아봅시다.

왜 "Too many authentication failures"가 발생하는가 ?

보통 SSH 접속 시에 발생하는 Too many authentication failures 에러는 주로 PC의 ssh-agent나 SSH 클라이언트가 가지고 있는 모든 개인 키(Private Key)를 서버에 무작위로 계속 시도하기 때문에 발생합니다.

원래 서버가 허용하는 최대 로그인 시도 횟수(기본 보통 6회)를 초과해 버려서, 정작 진짜 필요한 올바른 키를 제출하기도 전에 서버가 연결을 끊어버리는 현상이죠.

⚠️
아래 명령어는 SSH로 접속하려는 서버가 아니라, SSH 접속을 시도하는 PC에서 실행합니다.

(1) 임시 명령어로 해결하는 방법

SSH 명령어 뒤에 -o IdentitiesOnly=yes 옵션을 붙여주면, 다른 불필요한 키들을 전부 무시하고 특정 키 파일 하나만 사용하도록 강제할 수 있습니다. 물론 키 파일이 아닌 일반 패스워드로 로그인 할 경우도 마찬가지입니다.

  1. SSH 키를 가지고 있는 경우
ssh -o IdentitiesOnly=yes -i ~/.ssh/your_key.pem [email protected]
  1. 일반 패스워드로 로그인 할 경우
ssh -o IdentitiesOnly=yes [email protected]

다만, 이 방법은 영구적인 방법이 아니기에 접속 할 때마다, IdentitiesOnly=yes 를 붙여야 합니다.

(2) 영구적으로 해결하는 방법

  1. SSH 설정 파일을 엽니다 (없으면 새로 생성됩니다)
nano ~/.ssh/config
  1. 해당 파일 안에 아래 내용을 추가하고 저장합니다.
    (아래의 내용은 모든 서버 접속 시 불필요한 키의 자동 제출을 막는 설정입니다. 이미 내용이 존재 하면 아래와 같이 바꿔주시면 됩니다.)
Host *
    IdentitiesOnly yes
  1. 설정 파일의 권한을 안전하게 제한합니다.
    (권한이 너무 열려있으면 SSH가 보안상 이유로 설정을 무시하기 때문입니다)
chmod 600 ~/.ssh/config
💡
이미 존재한다면 위의 설정은 기본적으로 적용되어 있을지도 모르지만, 보안을 위해 한 번 더 적용해도 괜찮습니다

대부분의 Too many authentication failures는 위의 2가지 방법으로 해결이 가능합니다 .