"사용자 루트에 대해 너무 많은 인증 실패"에서 복구하는 방법


64

putty 터미널을 사용하여 root @ host 사용자에 대한 SSH 연결을 설정하려고 여러 번 시도했습니다. 그렇게하는 동안 잘못된 자격 증명을 여러 번 지정한 후 올바르게 지정한 다음 자격 증명이 수락 된 후 ssh 세션이 중단됩니다.

"서버가 예기치 않게 네트워크 연결을 종료했습니다".

이 오류는 퍼티 터미널에서보고합니다. 로컬 콘솔에서 root @ localhost를 ssh하려고하면 정상적으로 작동합니다. 다른 호스트에서 otheruser @ host를 ssh하면 잘 작동합니다. 따라서 네트워크 연결 문제는 유죄가 아닙니다. 내가 생각하고있는 유일한 오류 : "사용자 루트에 대한 너무 많은 인증 실패" 퍼티는 다른 오류를보고 있지만.

문제는 이 오류 조건에서 복구하고 퍼티 로그인을 다시 허용하는 방법 입니다. sshd를 다시 시작하면 도움이되지 않는 것 같습니다



1
Too many Authentication Failures전혀 로그인하기 전에 오류가 발생 하면 ssh 에이전트 (예 : Windows의 미인)를 비활성화하십시오 .
Mahn

답변:


8

ssh에 대한 루트 로그인이 허용됩니까?

sshd_config를 점검하고 루트 로그인이 허용되는지 확인하십시오. 설정이 변경되면 sshd를 다시 시작해야합니다.


120

"사용자 루트에 대해 너무 많은 인증 실패"는 SSH 서버의 MaxAuthTries 제한을 초과했음을 의미 합니다. 클라이언트가 /home/USER/.ssh/에 저장된 모든 가능한 키를 사용하여 인증하려고합니다.

이 상황은 다음과 같은 방법으로 해결할 수 있습니다.

  1. ssh -i / path / to / id_rsa root @ host
  2. /home/USER/.ssh/config에 Host / IdentityFile 쌍을 지정 하십시오 .
    • Host host
    • IdentityFile /home/USER/.ssh/id_rsa
    • Host host2
    • IdentityFile /home/USER/.ssh/id_rsa2
  3. / etc / ssh / sshd_config 의 SSH 서버에서 MaxAuthTries 값을 늘리 십시오 (권장되지 않음).

9
이것은 정말로 받아 들여지는 대답이어야합니다!
Benjamin

4
허용되는 답변이 되려면 질문에 언급 된 소프트웨어에 대한 답변이어야합니다. =)
rakslice

4
한도를 초과 한 또 다른 원인은 ssh 에이전트 일 수 있습니다. ssh -vvssh-agent에서 제공 한 두 키의 여러 버전이 시도되고 있음을 보여줍니다. 나는 이것이 자주 재부팅되지 않고 만료 된 일부 키를 교체했기 때문이라고 생각합니다. 분명히 ssh-agent는 이전 키를 새 키로 덮어 쓰지 않습니다. 나는 ssh-agent를 죽였고 문제는 사라졌다.
Mark

증가로 인해 어떤 단점이 MaxAuthTries있습니까? 많은 다른 키를 시도하여 많은 공격이 수행되는 것은 의심 스럽다. 침입자가 그렇게하기를 원한다면 연결을 끊고 한계에 도달 할 때마다 새 연결을 열면됩니다. 그들은 어쨌든 열쇠를 강요하는 데 성공하지 않을 것이다.
kasperd

@ 마크 감사합니다! ssh-agent를 다시 시작하면 문제가 해결되었습니다!
winduptoy

90

다음과 같은 SSH 오류가 발생하면 :

$ Received disconnect from host: 2: Too many authentication failures for root

.ssh디렉토리에 5 개 이상의 DSA / RSA ID 파일이 저장된 경우 (시스템에서 기본값)이 문제가 발생할 수 있습니다 . 이 경우 -i, 명령 행에서 옵션을 지정하지 않으면 ssh 클라이언트는 먼저 각 ID (개인 키)와 다음 비밀번호 인증 프롬프트를 사용하여 로그인을 시도합니다. 그러나 sshd는 5 번의 잘못된 로그인 시도 후 연결을 끊습니다 (기본값은 다를 수 있음).

따라서 .ssh 디렉토리에 여러 개인 키가있는 Public Key Authentication경우 -o선택적 인수를 사용하여 명령 행에서 비활성화 할 수 있습니다.

예를 들면 다음과 같습니다.

$ ssh -o PubkeyAuthentication=no root@host

1
정말 고맙습니다! SSH로만 액세스 할 수있는 Ubuntu Server 사용. 인터넷에서 맹목적으로 튜토리얼을 따른 후 "MaxAuthTries 1"을 설정했습니다.
Andre Figueiredo

당신은 내 생명을 구했습니다! 키 인증을 사용하지 않으므로 다른 답변은 도움이되지 않았습니다. 이것은 그것을 soooo 쉽게 해결했다!
George Green

5
이다 대답
smac89

비밀번호 인증을 사용하여 키를 다시 복사하면 매번 작동합니다. 내 .ssh디렉토리에 많은 키가 있지만 중요한 양이라고 생각하지 않습니다.
Ken Sharp

이것은 가장 관련성이 높은 답변이며 실제로 ssh-copy-id의 기본 동작이어야하므로 ID를 서버에 복사하려는 경우 일반적으로 존재하지 않습니다. 그러나 ssh가 pubkey를 사용하여 서버에 대해 먼저 인증을 시도하면 서버는 비밀번호를 입력하기 전에 연결을 중단합니다.
Sprinterfreak

17

원격 시스템에서 / etc / sshd_config를 열고 값을 변경하십시오.

MaxAuthTries 30

여러 키를 설치하거나 여러 연결을 열 때 발생하는 일반적인 문제입니다. 서버는 각 키를 단계별로 확인하고 MaxAuthTries가 3으로 설정된 경우 처음 3 회 시도 후 연결이 끊어집니다. 전형적인 ssh 보안.

문제를 분석하기 위해 원격 컴퓨터에 연결하는 동안 상세 모드를 사용하는 것이 좋습니다.

ssh -v -p port_number 사용자 @ 서버 이름

이 포럼에서 대부분의 사람들처럼 추측하는 것은 WRONG이며 시간 낭비입니다. 먼저 문제를 분석하고 정보를 수집 한 다음 요청하십시오.

즐기세요


필자의 경우 문제는 에이전트 전달로 로그인하여 자체 SSH ID를 사용하는 스크립트를 실행하려고 시도했다는 것입니다. 에이전트 전달로 실행했을 때 자체 시도하기 전에 너무 많은 ID였습니다. 그래서 에이전트 환경을 버리고 스크립트를 정리했습니다. MaxAuthTries를 늘릴 수도 있지만이 경우에는 필요하지 않습니다.
Sean Reifschneider

1
감사. -v내 ssh 클라이언트가 여러 키를 사용하려고 시도했습니다 (지금은 꽤 있습니다). 내가 가진 에이전트에서 그들을 청소ssh-add -D
joeytwiddle

12

이것은 나쁜 습관입니다. 원격 상자에 일반 사용자가 있고 그것을 사용하여 ssh를 통해 연결 한 다음 su / sudo를 사용하여 루트 액세스 권한을 얻으십시오.


10

나를 위해이 문제는 내가 연결하고있는 호스트에 대해 아래의 ssh_config를 작성하여 해결되었습니다.

(~ / .ssh / config)

Host example
HostName example.com
User admin
IdentityFile ~/path/to/ssh_key_rsa
IdentitiesOnly=yes

~/.ssh16과 같이 폴더 에 너무 많은 ssh 키가 있기 때문에 문제가 발생했습니다 . 그리고 구성 에 이러한 IdentityFileAND IdentitiesOnly지시문이 없으면 내 컴퓨터는 ~/.ssh올바른 IdentityFile을 시도하기 전에 모든 키 를 시도하고 최대 시도 횟수에 도달했습니다.


6

위에 Anon이 게시 한 것처럼 다른 사용자를 사용하여 ssh 액세스 권한을 얻은 다음 su명령을 사용하여 액세스 권한을 얻는 것이 좋습니다 root.

또한 서버 PermitRootLogin/etc/ssh/sshd_config파일에서 활성화해야 합니다.


5

나는 또한 같은 문제에 직면했다. 이 서버는 공개 키의 각 오퍼를 인증 시도로 계산하기 때문에 Pageant 를 사용 하고 많은 키를로드 한 경우 쉽게 발생할 수 있습니다 .

(이 조언은 여기 에서 가져옵니다 .)


1
우리는 링크가 썩고 링크가 무용지물이됨에 따라 링크 전용 답변에 크게 관심이 없습니다. 반드시 링크를 유지하십시오. 그러나 한두 단락으로 해결책을 요약 할 수 있다면 여기에 의견을 제시 할 수 있습니다.
MadHatter

2
나는 당신이 내 후속 편집을 용서하기를 바랍니다. 지금 (나는) 당신이 참조하는 조언은 당신이 제공하는 조언임을 분명히하지만, 여전히 원래 출처를 인정합니다. 답을 개선하기 위해 열심히 노력한 결과 +1입니다.
MadHatter

Putty에서도 "너무 많은 인증 실패"문제가있었습니다. PageAnt에서 다른 모든 키를 제거한 후 마침내 로그인했습니다.
klor

4

다음 명령을 실행하여 시스템에서이 문제를 해결했습니다.

eval $(ssh-agent)
ssh-add  ~/.ssh/keyname

그런 다음 원격 컴퓨터에서 ssh 시도


3

다른 곳에서 언급 한 것처럼 문제를 완전히 해결할 수있을 때까지이 문제를 일시적으로 해결하기 위해 사용자의 PAM 집계를 재설정하여 다시 시도 할 수 있습니다.

pam_tally --reset --user <USERNAME>
pam_tally2 --reset --user <USERNAME>

2

나는 비슷한 문제에 물렸다. 그러나 실제 원인은 ForwardAgent yes파이프를 따라 기계의 구성 파일에 있었기 때문 입니다. 기계 A에서 기계 B로, 기계 C로 연결하고있었습니다.

B-> C의 ssh 시도에서 오류 메시지가 표시되었지만 A가 전달을 활성화했기 때문에 발생했습니다. 따라서 C는 먼저 A의 모든 키와 B의 키만 제공했습니다.

A에 키를 하나 더 추가했을 때 갑자기 나타났습니다.


1

Mac에서이 문제를 해결했습니다.

  1. "sudo passwd root"로 루트 비밀번호 설정
  2. "nano / etc / ssh_config"를 사용하여 ssh 구성 파일 편집 및 저장
  3. RSAAuthentication을 yes가 아니라 "no"로 변경

0

좋아, 내 경우에는 꽤 이상했다.

SSH 키가있는 표준 vagrant VM이 있으며 Putty를 사용하여 SSH로 연결할 수 있습니다. PHPStorm에서 배포하는 동안 too many authentication failures오류가 발생했습니다. 그래서 나는 MaxAuthTries내를 증가시킨 sshd_config다음 Auth failed오류와 함께 맞았습니다 Auth cancel.

자, 왜 이것을 시도했는지 정확히 알지 못하지만 PHPStorm의 배포 창에서 SSH 키 경로 끝에 점을 추가했습니다. 따라서 다음과 같습니다.

C:\Users\Deadpool\\.ssh\chimichanga

이제는 다음과 같습니다

C:\Users\Deadpool\\.ssh\chimichanga.

그리고 그것은 작동합니다 ... ".ssh"폴더에 더 많은 파일이 있습니다 :

chimichanga - copy of "id_rsa" from vagrant machine
chimichanga.ppk
chimichanga.pub

나는 그 fcuking dot이 무엇을하는지 확실하지 않지만 .ppk파일을 사용하는 것이 효과가 없기 때문에 그것은 일종의 마술이라고 생각합니다.


0

다른 답변은 루트로 연결하는 가장 좋은 방법과 보안상의 의미를 알려 주지만 명백한 질문은

이 오류 상태에서 복구하고 퍼티 로그인을 다시 허용하는 방법?

마지막으로 연결했을 때 원격 서버가 연결을 끊었다 고 언급했습니다.

내가 생각할 수있는 것은 원격 서버가 fail2ban (*)을 실행 중이며 성공적인 로그인 후 IP를 "수용"한다는 것입니다. 다시 로그인하여이를 테스트 할 수 있으며 로그인 프롬프트가 표시되지 않습니다.

두 가지 해결책이 있습니다. 감옥 시간을 기다릴 수 있습니다.이 시점에서 일이 단순히 정상으로 돌아가지만 감옥 시간은 무엇이든 될 수 있습니다. 또는 로그인 할 다른 컴퓨터를 찾은 다음 IP를 "감옥 해제"할 수 있습니다.이 경우 "다른"은 원격 서버의 관점에서 볼 수 있으므로 동일한 방화벽 뒤의 다른 컴퓨터는 작동하지 않을 수 있습니다. .

(2) fail2ban은 다양한 로그 파일을 주기적으로 확인하고 방화벽 규칙을 조정하여 클라이언트에서 악의적 인 동작을 감지 할 때 서버가 "사라지지"않도록하는 매우 편리한 데몬입니다. 데비안에서는 특정 IP에서 여러 개의 실패한 ssh 로그인을 감지하도록 구성된 상자에서 제공되며 3 이후에는 해당 IP에서 모든 패킷을 삭제합니다. 스크립트 화 된 무차별 대입 공격을 막기 위해 훌륭하게 작동합니다.


0

다른 답변에서 언급 @sufferer 같은 일부 리눅스 배포판은 예를 들어 SSH 같은 외부 표시 서비스에 대한 무력 공격으로부터 보호하기 위해 모니터 포함 DenyHosts또는 fail2ban. 이 모니터는 실패한 시도를 찾는 로그 파일을 확인하고 실패가 너무 많은 IP 주소를 차단하는 필터를 추가합니다 (숫자는 구성 가능하고 sshd 구성과 독립적 임).

배포판 fail2ban에 iptables 방화벽에 규칙을 추가하는 서비스를 보호하는가 포함되어 있으면 다음 명령을 사용하여 감독되는 서비스 또는 "감옥"을 확인할 수 있습니다.

sudo fail2ban-client status

SSH 서비스의 감옥은 sshd이므로 금지 된 IP가 있는지 확인할 수 있습니다.

sudo fail2ban-client status sshd

IP abcd를 금지 해제하려면 :

sudo fail2ban-client set sshd unbanip a.b.c.d

이있는 경우 DenyHosts금지 된 목록은 /etc/hosts.deny 파일에 있습니다. 이 파일을 루트로 직접 편집 할 수 있습니다. 일부 IP abcd 영구 액세스 권한을 부여 sshd:a.b.c.d하기 위해 /etc/hosts.allow 파일에 행 을 추가 할 수 있습니다 .

언제나 그렇듯이 man명령은 친구입니다.

man fail2ban
man hosts.deny

다른 유사한 유틸리티가 있어야하지만이 유틸리티 만 사용했습니다.

sshd 구성에서 허용되는 재시도 횟수를 늘리면 금지 된 IP가 해제되지 않고 동일한 연결에서 더 많은 실패 만 허용됩니다. 허용 된 수를 초과하면 사용자 / 공격자가 단순히 다시 연결하여 n 번 더 시도합니다.

다른 서비스에는 차단 목록이 통합되어 있습니다 (VNC 서버 재시작에 대한 Rajnesh Thakur의 답변 참조).


-2

우분투 16.04 서버에서 두 가지 간단한 단계 로이 문제를 해결했습니다.

먼저 내 VNC 서버를 중지하거나 프로세스를 종료하십시오.

vncserver -kill :1

그런 다음 다시 시작하십시오.

vncserver

그런 다음 원격 데스크톱 클라이언트에서 연결 한 후-

192.0.2.99:5901

!!


이것은 질문과 관련이 없습니다.
Ken Sharp

-3

해결을 위해 아래 단계를 따르십시오

  1. / etc / ssh / sshd_config 백업
  2. sshd_config에서 MaxAuthTries 값 증가
  3. stopsrc -s sshd; startsrc -s sshd

위의 변경 후 다시 확인하십시오.


-4

"SServer에서 연결이 끊어진 메시지 유형 2 (프로토콜 오류)를 보냈습니다. 사용자에게 너무 많은 인증 실패"가 표시되는 것과 동일한 문제가있었습니다.

내 ssh (.ppk 키)를 모두 제거한 다음 AD 통합 서버에 로그인 하여이 문제를 해결했습니다.


이 답변은 유용하지 않으므로 .ppk 파일을 제거하는 것이 좋습니다. 사람들은 .ppk 파일을 제거해야한다고 생각한다면 (그리고 당신이하고 싶은 좋은 이유가 생각 나지 않습니다), 다른 것으로 이름을 바꾸고, 삭제하지 마십시오. 그들은 당신이 아마 필요할 키를 포함합니다.
Law29
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.