이번 포스트에서는 SSH 접속 시 “Too many authentication failures” 오류 원인과 해결방법을 알아보려고 합니다. 리눅스 서버에 SSH로 접속하다가 갑자기 Received disconnect from x.x.x.x port 22:2: Too many authentication failures 라는 오류 메시지를 마주한 적이 있으신가요? 처음 이 오류를 보면 당황스럽지만, 사실 이는 매우 흔한 문제이며 몇 가지 간단한 방법으로 해결할 수 있습니다. 오늘은 이 성가신 오류가 왜 발생하는지, 그리고 어떻게 해결할 수 있는지 차근차근 알아보겠습니다.

 

1. “Too many authentication failures” 오류가 발생하는 이유

SSH 접속 시 이 오류가 발생하는 주된 이유는 인증 시도 횟수 제한에 걸렸기 때문입니다. SSH 서버는 보안상의 이유로 연속적인 인증 실패를 제한하는데, 일반적으로 6회 정도의 시도 후 연결을 차단합니다.

주요 원인들

  • 다수의 SSH 키 보유: 클라이언트에 여러 개의 SSH 키가 있을 때 SSH 클라이언트가 모든 키를 차례대로 시도
  • 잘못된 키 사용: 서버에 등록되지 않은 키를 사용하여 접속 시도
  • SSH Agent의 키 관리 문제: ssh-agent에 여러 키가 로드되어 있어 불필요한 시도 발생
  • 인증 방식 불일치: 서버가 요구하는 인증 방식과 클라이언트 설정이 맞지 않는 경우

실제로 저도 여러 프로젝트를 진행하면서 SSH 키가 늘어나다 보니 이런 문제를 자주 겪었는데요, 다행히 몇 가지 방법으로 깔끔하게 해결할 수 있었습니다.

 

2. 즉시 해결할 수 있는 임시 방법

급하게 서버에 접속해야 할 때 사용할 수 있는 빠른 해결책들입니다.

IdentitiesOnly 옵션 사용

가장 간단하고 효과적인 방법입니다:

ssh -o IdentitiesOnly=yes username@server-ip

이 옵션은 SSH 클라이언트가 ssh-agent에 있는 모든 키를 시도하지 않고, 명시적으로 지정된 키만 사용하도록 합니다.

특정 키 파일 지정

서버에 등록된 정확한 키를 알고 있다면:

ssh -i ~/.ssh/your-specific-key username@server-ip

공개키 인증 비활성화 (패스워드 사용)

패스워드로 접속하고 싶다면:

ssh -o PubkeyAuthentication=no username@server-ip

 

3. SSH Config 파일로 확실히 해결

매번 옵션을 입력하는 것이 번거롭다면, SSH 설정 파일을 수정하여 근본적으로 해결할 수 있습니다.

개별 호스트 설정

~/.ssh/config 파일을 편집하여 특정 서버에 대한 설정을 추가합니다:

vim ~/.ssh/config

다음과 같이 설정을 추가하세요:

Host myserver
    HostName 192.168.1.100
    User username
    IdentityFile ~/.ssh/specific-key
    IdentitiesOnly yes

전역 설정

모든 SSH 연결에 적용하고 싶다면:

Host *
    IdentitiesOnly yes

이렇게 설정하면 앞으로는 단순히 ssh myserver 명령으로도 문제없이 접속할 수 있습니다.

 

4. SSH Agent 관리로 근본 원인 해결

SSH Agent에 많은 키가 로드되어 있을 때도 이 문제가 발생할 수 있습니다.

현재 로드된 키 확인

ssh-add -l

모든 키 제거

ssh-add -D

필요한 키만 추가

ssh-add ~/.ssh/your-needed-key

 

5. 서버 측 설정 확인 및 조정

서버 관리자라면 SSH 서버 설정도 확인해볼 필요가 있습니다.

MaxAuthTries 설정 확인

/etc/ssh/sshd_config 파일에서:

# 기본값은 보통 6
MaxAuthTries 10

디버그 모드로 연결 과정 확인

클라이언트에서 상세한 연결 과정을 보려면:

ssh -vvv username@server-ip

이 명령은 어떤 키들이 시도되고 있는지, 어디서 실패하는지 자세히 보여줍니다.

 

6. PuTTY 사용자를 위한 해결 방법

Windows 환경에서 PuTTY를 사용하는 분들도 동일한 문제를 겪을 수 있습니다. PuTTY에서는 Pageant(SSH 에이전트)와 관련된 추가적인 해결 방법들이 있어요.

PuTTY에서 발생하는 주요 원인

  • Pageant에 많은 키 로드: Windows용 SSH 에이전트인 Pageant에 여러 키가 등록되어 있을 때
  • GSSAPI 인증 활성화: 기본적으로 활성화된 GSSAPI 인증이 먼저 시도되면서 발생
  • 키 파일 미지정: PuTTY 설정에서 특정 키를 지정하지 않아 모든 키가 시도되는 경우

PuTTY 설정으로 해결하기

방법 1: 특정 키 파일 지정

PuTTY 설정에서 다음과 같이 진행하세요:

  1. Session 탭에서 서버 정보 입력
  2. Connection > SSH > Auth > Credentials 이동
  3. Private key file for authentication.ppk 파일 경로 지정
  4. 설정 저장 후 접속

이렇게 하면 PuTTY가 Pageant의 다른 키들을 무시하고 지정된 키만 사용합니다.

방법 2: GSSAPI 인증 비활성화

때로는 GSSAPI 인증이 문제가 될 수 있습니다:

  1. Connection > SSH > Auth > GSSAPI 이동
  2. Attempt GSSAPI authentication (SSH-2 only) 체크 해제
  3. 설정 저장 후 재접속

방법 3: Pageant 인증 비활성화

Pageant 사용을 완전히 중단하려면:

  1. Connection > SSH > Auth > Credentials 이동
  2. Attempt authentication using Pageant 체크 해제
  3. 대신 패스워드 인증 사용

Pageant 관리하기

불필요한 키 제거

Pageant를 열고 사용하지 않는 키들을 제거하세요:

  1. 시스템 트레이의 Pageant 아이콘 더블클릭
  2. 불필요한 키 선택 후 Remove Key 클릭
  3. 필요한 키만 남겨두기

키 재추가

올바른 키만 다시 추가하려면:

  1. Add Key 버튼 클릭
  2. 서버에 등록된 .ppk 파일 선택
  3. 패스프레이즈 입력 (필요시)

 

7. 실제 상황별 해결 예시

예시 1: AWS EC2 인스턴스 접속

AWS에서 제공하는 키 페어를 사용할 때:

ssh -i ~/.ssh/aws-key.pem -o IdentitiesOnly=yes ec2-user@ec2-instance-ip

예시 2: GitHub과 서버 키가 혼재된 경우

GitHub용 키와 서버용 키가 모두 있을 때 ~/.ssh/config 설정:

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/github-key
    IdentitiesOnly yes

Host production-server
    HostName prod.example.com
    User deploy
    IdentityFile ~/.ssh/production-key
    IdentitiesOnly yes

예시 3: PuTTY에서 AWS EC2 접속

PuTTY로 EC2 인스턴스에 접속할 때:

  1. PuTTYgen으로 .pem 파일을 .ppk로 변환
  2. PuTTY 설정에서:
    • Session: ec2-user@your-ec2-ip
    • Auth > Credentials: 변환한 .ppk 파일 경로 지정
    • GSSAPI: 모든 옵션 체크 해제

예시 4: PuTTY에서 패스워드 인증 강제 사용

키 인증 대신 패스워드를 사용하고 싶을 때:

  1. Connection > SSH > Auth > Credentials
  2. Attempt authentication using Pageant 체크 해제
  3. Private key file for authentication 필드 비우기
  4. 접속 시 패스워드 입력 프롬프트 대기

 

8. 문제가 지속될 때 추가 확인사항

위의 방법들로도 해결되지 않는다면:

네트워크 차단 확인

일부 서버는 특정 IP에서 여러 번 실패하면 일시적으로 접속을 차단합니다:

# 서버에서 fail2ban 로그 확인
sudo tail -f /var/log/fail2ban.log

서버 로그 확인

서버의 SSH 로그를 확인해보세요:

sudo tail -f /var/log/auth.log

 

“Too many authentication failures” 오류는 처음에는 당황스럽지만, 원인을 이해하고 나면 충분히 해결 가능한 문제입니다. 리눅스/맥에서는 IdentitiesOnly 옵션을, Windows PuTTY에서는 특정 키 파일 지정Pageant 관리가 핵심입니다.

플랫폼별 핵심 해결책:

    • 리눅스/맥: SSH Config에 IdentitiesOnly yes 추가
    • Windows PuTTY: 특정 .ppk 파일 지정 + Pageant 관리
    • 공통: 불필요한 키 정리 및 체계적인 키 관리

 


관련 링크:

 

댓글 남기기