ssh 원격 호스트 식별이 변경되었습니다


619

서버를 다시 설치했는데 다음 메시지가 나타납니다.

[user@hostname ~]$ ssh root@pong
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
6e:45:f9:a8:af:38:3d:a1:a5:c7:76:1d:02:f8:77:00.
Please contact your system administrator.
Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA host key for pong has changed and you have requested strict checking.
Host key verification failed.

인터넷에서 찾은 다양한 솔루션을 시도했습니다. 내 known_hosts파일 (일반적으로 ~/.ssh/known_hosts)이에 /var/lib/sss/pubconf/known_hosts있습니다. 편집하려고했지만 한 상태로 유지됩니다. ipa-client를 설치 했으며 Fedora 19가 있습니다.이 경고를 어떻게 해결합니까?

지금까지 답변 된 모든 답변은 Freeipa가 설치되어 있지 않은 경우에만 작동합니다.

adrin의 아래 의견에서 freeipa에 대한 정답은 여기에 있습니다 .


1
당신은 IP 주소 충돌이 nslookup이 문제를 더 디버깅하기 위해 IP를 가지고있는 경우이 문제가 발생할 수있는 어려운 방법을 발견
sharrajesh

1
여기 교착 상태가 있습니다. 이 답변은 중복으로 표시되어 아무도 답변을 추가 할 수 없으며 링크 된 답변은 주제를 표시하지 않으므로 답변을 추가 할 수 없습니다. known_hosts를 삭제하면 문제도 해결됩니다.
zar

1
나는 같은 문제가 있었다. 나와 다른 사람들을 위해 질문과 대답은 다음과 같습니다. superuser.com/questions/1071204/…
adrin

3
누군가 자신의 키를 먼저 확인하려고 할 때이 답변이 유용하다는 것을 알았습니다. askubuntu.com/a/83499/620623
Declan McKenna

sharrajesh가 언급했듯이 : DNS 항목 (FreeIPA에서)을 확인하고 네트워크에서 연결할 수없는 IP를 가진 여러 개의 A 항목이 없음을 확인하십시오.
th3penguinwhisperer

답변:


1071

가장 간단한 해결책은 다음과 같습니다.

ssh-keygen -R <host>

예를 들어

ssh-keygen -R 192.168.3.10

에서 ssh-keygenman 페이지 :

  • -R hostnameknown_hosts 파일에서 호스트 이름에 속하는 모든 키를 제거합니다. 이 옵션은 해시 된 호스트를 삭제하는 데 유용합니다 (위의 -H 옵션 참조).

나는 Windows 와이 솔루션을 사용하고 있으며 키를 제거하거나 작동하지 않습니다.
jaycode

5
좋아, Windows에서 밝혀졌습니다 .git bash의 터미널 (또는 MingW32 터미널)을 사용해야합니다. 교활한.
jaycode

25
특정 포트를 통해 연결 한 경우와 같은 구문으로 제거해야 할 수도 있습니다 ssh-keygen -R [127.0.0.1]:3022. .ssh / known_hosts 파일에서 명시 적으로 말하는 내용을 확인하십시오.
Adam Johns

4
이 작업을 시도하면 "~ / .ssh / known_hosts에서 찾을 수없는"<hostname> "오류가 발생합니다.
Nodeocrat

3
이 경고가 발생하는 이유는 무엇입니까?
Vilas Joshi

199

사용하다

ssh-keygen -R [hostname]

IP 주소 / 호스트 이름의 예는 다음과 같습니다.

ssh-keygen -R 168.9.9.2

그러면 known_hosts에서 호스트의 문제가 업데이트됩니다. known_hosts의 경로를 -f 플래그와 함께 제공 할 수도 있습니다.


1
해당 키 제거 $ ssh-keygen -R {server.name.com}| $ ssh-keygen -R {ssh.server.ip.address}| $ ssh-keygen -R server.example.com
DaddyMoe

5
설명이없는 대답은 어떻게 많은지지를 얻습니까?. 보안 문제도없고 설명도 없습니다 .... -1
Daniel W.

4
또한 아래의 다른 답변의 사본처럼 보입니다. 이 엉망진창을 정리해주세요 ...
Daniel W.

115

Digital Ocean Ubuntu 이미지를 다시 만든 후에도 이와 동일한 오류가 발생했습니다. 서버 IP 대신 다음 명령을 사용했습니다.[IP_ADDRESS]

ssh-keygen -R [IP_ADDRESS]

정말 고맙습니다! 호스트 이름을 사용하고 있었고 IP_ADDRESS에서만 작동했습니다. :)
J. Lopes

1
이것은 나를 위해 해냈으며 받아 들일만한 대답이어야합니다. 나중에이 답변의 사본이 두 개 있으며 왜 둘 다 더 많은 투표를했는지 모르겠습니다.
Wylliam Judd

너의 실수는 같지 않았다. 서버에서 SSSD를 실행하지 않았습니다. OP를 참조하십시오.
Mercury00

39

서버를 다시 설치하면 ID가 변경되고이 메시지가 표시됩니다. Ssh는 연결된 서버를 변경했는지 또는 모든 통신을 감지하기 위해 네트워크에 서버를 추가했는지 알 수있는 방법이 없으므로주의를 기울여야합니다.

관련 항목을 삭제하여 known_hosts에서 키를 제거하십시오.

sed '4d' -i /var/lib/sss/pubconf/known_hosts

4d계정에Offending RSA ...known_hosts:4


1
고마워,하지만 이유를 모르겠지만 그것을 제거하고 다시 들어갑니다. sssd 서비스를 중지하려고 시도했지만이 효과가 사라졌지 만 sssd를 시작하면 다시 나타납니다.
Filip Dobrovolný

~ / .ssh 디렉토리를 백업 한 후 삭제하십시오. ~ / .ssh가 날아간 후에도 서비스가 계속 키를 다시 추가합니까?
mockinterface

.ssh의 이름을 .ssh_old로 바 꾸었습니다. 새 연결을 시도한 후 빈 디렉토리 .ssh를 만듭니다. 그리고 난 여전히 / var / lib / sss / pubconf / known_hosts를 "편집 가능"하게 만들 수 없습니다.
Filip Dobrovolný

4
보다 편리한 방법 : sed -i -e 4d /var/lib/sss/pubconf/known_hosts
Pierz

2
identification이 오류 메시지와 같은 중단을 일으키지 않고 서버를 다시 빌드하려는 경우 서버를 어떻게 백업 합니까?
Ninjaxor

38

슬레지 해머는 알려진 모든 호스트를 한 번에 제거하는 것입니다.

rm ~/.ssh/known_hosts

우리는 점프 박스에서 짧은 수명의 서버의 작은 서브넷을 사용하고 동일한 ssh 키를 공유하는 서버의 내부 IP 주소를 자주 사용하기 때문에 이에 반대합니다.


허용 된 답변이 효과가 없을 때 방랑 한 VM에서 나를 위해 일했습니다.
100pic

1
벨트에 유용한 도구이지만 MitM 공격 (정확한 known_hosts방지)에 노출 될 수 있습니다 . 모든 호스트가 안전하다고 확신하는 경우에만이 작업을 수행하십시오 .
Freedom_Ben

26

문제는 이전에 원격 컴퓨터에 대한 SSH 연결을 수락했으며 마지막 연결 이후 원격 컴퓨터의 디지털 지문 또는 SHA256 해시 키가 변경되었다는 것입니다. 따라서 SSH를 다시 ​​시도하거나 github을 사용하여 SSH를 사용하는 코드를 가져 오면 오류가 발생합니다. 왜? 이전과 동일한 원격 컴퓨터 주소를 사용하고 있지만 원격 컴퓨터가 다른 지문으로 응답하고 있기 때문입니다. 따라서 누군가가 이전에 연결 한 컴퓨터를 스푸핑 할 수 있습니다. 이것은 보안 문제입니다.

원격 컴퓨터가 손상, 해킹, 스푸핑 등이 아니라고 100 % 확신하는 경우 원격 컴퓨터의 known_hosts 파일에서 항목을 삭제하기 만하면됩니다. 더 이상 연결시 SHA256 지문 ID가 일치하지 않으므로 문제가 해결됩니다.

Mac에서 여기 내가 한 일이 있습니다.

1) 다음과 같이 출력 라인을 찾으십시오 RSA host key for servername:port has changed and you have requested strict checking.. 서버 이름과 해당 로그 출력의 포트가 모두 필요합니다.

2) SSH 알려진 호스트 파일 백업 cp /Users/yourmacusername/.ssh/known_hosts /Users/yourmacusername/.ssh/known_hosts.bak

3) 컴퓨터의 오래된 지문이 저장된 줄을 찾아 삭제합니다. 1 단계의 서버 이름과 포트를 사용하여 특정 위반 원격 컴퓨터 지문을 검색 할 수 있습니다.nano /Users/yourmacusername/.ssh/known_hosts

4) CTRL-X를 종료하고 변경 사항을 저장하려면 Y를 선택하십시오.

이제 입력 ssh -p port servername하면 해당 컴퓨터에 처음 SSH를 시도했을 때 수행 한 원래 프롬프트가 표시됩니다. 그러면 원격 컴퓨터의 업데이트 된 SHA256 지문을 known_hosts 파일에 저장하는 옵션이 제공됩니다. 포트 22를 통해 SSH를 사용하는 경우 -p 인수가 필요하지 않습니다.

알려진 known_hosts 파일을 복원 할 수있는 문제 : cp /Users/yourmacusername/.ssh/known_hosts.bak /Users/yourmacusername/.ssh/known_hosts


3
승인 된 답변으로 표시되어야합니다. 그 단계에 따라 문제가 해결되었지만 ssh-keygen -R [IP_ADDRESS]저에게는 효과가 없었습니다. 감사!
Yusuf Kamil AK

예, 불공평 한 경우 중 하나입니다. 두 번째와 세 번째 대답은 첫 번째 말을 반복하고 모든 해결책이 불완전합니다.
brasofilo

16

많은 사람들이 이미 말했듯이 ssh-keygen, 즉

ssh-keygen -R pong

또한 호스트 키 검사를 일시적으로 해제하는 것이 좋습니다.

ssh -oStrictHostKeyChecking=no root@pong

내가 .ssh / config에 사용하고있는 것 : Host ???? CheckHostIP no StrictHostKeyChecking no(3 줄, 2 줄부터 시작)
XXL

15

나를 위해 작동합니다!

오류 : / var / lib / sss / pubconf / known_hosts에서 RSA 키를 위반하는 경우 : 4

이는 줄 번호에 문제가있는 RSA 키가 있음을 나타냅니다. 4

해결책 1 :

1. vi /var/lib/sss/pubconf/known_hosts

2 remove line no: 4 .

3 Save and Exit, and Retry .

해결책 2 :

ssh-keygen -R "you server hostname or ip"

또는

해결책 3 :

sed -i '4d' /root/.ssh/known_hosts

그러면 해당 4th라인 이 제거 됩니다 /root/.ssh/known_hosts( -i).


1
이것은 루트의 .ssh known_hosts 파일에서 작동합니다. / var / lib / sss / pubconf / known_hosts (SSSD에 의해 관리되는 파일이며 원격 서버에 의해 채워짐)에는 해당되지 않습니다.
Mercury00

1
내 경우에는 어떤 이유로 알려진 문제가 known_hosts * 2 *에서 발생했습니다. 이 단계를 수행하면 @Sahil Gulati에게 감사드립니다!
Lucas

11

sed -i가 제대로 작동하지 않았지만 mockinterface의 솔루션을 사용했지만 vim을 사용하여 수동으로 줄을 삭제하여 해결했습니다.

sudo vim /var/lib/sss/pubconf/known_hosts

원하는 다른 텍스트 편집기를 사용할 수 있지만 관리 권한을 표시해야 할 수도 있습니다.


1
예, known_hosts 파일에서 동일한 IP 레코드를 삭제하면 문제가 해결됩니다.
wherby

항목은 ssh를 다시 시도 할 때 SSSD에 의해 즉시 재생성됩니다. sss pubconf known_hosts는 로컬 서버로 채워진 일부 로컬 저장소가 아니라 관리 파일입니다.
Mercury00

9

Mac 사용자 -R의 경우 ssh-keygen명령 플래그를 사용할 수 있습니다 . 빠른 예 :

ssh-keygen -R THE_IP_ADDRESS

THE_IP_ADDRESS당신이 ssh하려는 IP입니다. 그리고 당신은 잘 연결할 수 있습니다.


8

원격 컴퓨터 설정이 변경 되었기 때문입니다. 현재 키를 제거하십시오.

vim /root/.ssh/known_hosts

연결중인 IP의 회선을 삭제하십시오.


7

편집 /home/hostname /.ssh/known_hosts하고 4 줄을 삭제 한 후 저장하십시오.

그런 다음 ssh root@pong다시 실행 하면 다음 과 같은 메시지가 표시됩니다. Are you sure you want to continue connecting (yes/no)? yes, 그냥 print yes.

참고 : 문제가있는 경우 먼저 힌트를 읽으면 도움이됩니다.


실제로 무슨 일이 일어나고 있는지 설명하는 최고의 답변.
프로 메테우스

6

여기에있는 다른 답변은 훌륭하고 효과적입니다. 어쨌든, 삭제하여 문제를 해결했습니다 ~/.ssh/known_hosts. 이것은 확실히 문제를 해결하지만 아마도 최선의 방법은 아닙니다.


6

내 경우에는 이전에 동일한 IP (192.152.51.10) 가있는 컴퓨터와 ssh 연결이 있었고 시스템은 이전 호스트의 RSA 키 (/home/user_name/.ssh/known_hosts에 저장 됨)를 고려했기 때문에 발생했습니다. 불일치.

이 문제 를 해결 하려면 ip 192.152.51.10에 대해 이전에 저장된 RSA 키제거 해야합니다 .

ssh-keygen -f "/home/user_name/.ssh/known_hosts" -R 192.152.51.10

5

Mac에서 테스트 한 간단한 단일 라이너 솔루션 :

sed '/212.156.48.110/d' ~/.ssh/known_hosts > ~/.ssh/known_hosts

알려진 호스트에서 대상 ssh 호스트 IP 삭제 합니다.

여기서 212.156.48.110은 대상 호스트 IP 주소로 대체됩니다.

원인 : 포트 포워딩으로 인해 대상 IP가 다른 시스템에 대해 이미 알려져 있기 때문에 발생했습니다. 연결하기 전에 대상 IP를 삭제하면 문제가 해결됩니다.


4

이 명령을 사용하십시오 :

truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts

명령이 수행하는 작업과 수행하지 않는 작업에 대한 설명을 추가하십시오.
Daniel W.

6
왜 파일을 자르고 싶습니까? 이미 확인한 정보까지 모든 정보가 손실됩니다. 변경된 단일 공개 호스트 키에 대해 조치를 취하는 것은 나쁜 방법입니다.
Daniel W.

1
이것은 전체 해킹입니다 : D 그러나 작동합니다 : D
Benjamin

힌트 : 다른 모든 호스트 정보도 삭제됩니다. 컴퓨터에서 배포와 같은 자동화 된 스크립트를 실행하는 경우 모든 호스트 키를 수동으로 다시 확인해야하므로 스크립트가 손상 될 수 있습니다. 가장 쉬운 솔루션을 사용하고자하는 다른 사용자에게 경고 메시지를 표시합니다.
Mateng

3

다음을 사용하여 known_hosts에서 해당 항목을 제거하십시오.

ssh-keygen -R *ip_address_or_hostname*

known_hosts 파일 에서 문제가있는 IP 또는 호스트 이름을 제거하고 다시 연결을 시도합니다.

매뉴얼 페이지에서 :

-R hostname
known_hosts 파일에서 호스트 이름에 속하는 모든 키를 제거합니다. 이 옵션은 해시 된 호스트를 삭제하는 데 유용합니다 (위의 -H 옵션 참조).


3

그냥 해:

cd /home/user/.ssh/-> 여기에 user사용자 이름이됩니다./home/jon/ : 예).

그때

gedit known_hosts & 그 안의 내용을 삭제하십시오.

이제 ssh다시 작동합니다.


3

명령을 사용하여 포트 2222에서 실행중인 docker 컨테이너에 연결하려고하면 오류가 발생합니다

mian@tdowrick2~$ ssh pos@localhost -p 2222

그런 다음이 문제를 해결하려면 로컬 컴퓨터 (예 : 컨테이너가 아닌 호스트 시스템) 에서 텍스트 편집기로 파일을 cd ~/.ssh/열고여십시오 known_hosts. 로 시작하는 줄을 제거하고 [localhost]:2222파일을 저장하십시오. 이제 다시 ssh하려고

mian@tdowrick2~$ ssh pos@localhost -p 2222

오류는 사라지지만 컨테이너를 다시 시작할 때마다 수행해야합니다.


2

내 해결책은 다음과 같습니다.

  1. vi ~/.ssh/known_hosts
  2. 원하는 연결 IP가 포함 된 줄을 삭제하십시오.

이것은 모두를 삭제하는 것보다 낫습니다 known_hosts


이것은 아래의 miota85와 같은 대답입니다.
Daniel W.

2

클라이언트 측 문제 (IP의 중복 키) :

변형 해결 :

하나의 IP를 지우려면 (기본 포트 22) :

ssh-keygen -f -R 7.7.7.7

하나의 IP ( 비 기본 포트)의 경우 :

ssh-keygen -f -R 7.7.7.7:333

모든 IP를 빠르게 지 웁니다.

cd ~; rm .ssh/known_hosts

7.7.7.7- 서버 IP 연결을 SSH

333- 비표준 포트


2

때로는 어떤 이유로 든 서버를 다시 설치 해야하는 경우 ssh로 연결할 때 서버가 식별이 변경되었다고 말합니다. 공격아니라는 것을 알고 시스템을 복원 한 경우 ssh-keygen을 사용하여 known_hosts에서 기존 식별 정보를 제거 할 수 있습니다.

ssh-keygen -R <host/ip:hostname>
root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

다시 연결하면 새 지문을 확인하라는 메시지가 표시됩니다.

ssh -l user <host/ip:hostname>
The authenticity of host '<host/ip:hostname>' can't 
be established.
RSA key fingerprint is 3f:3d:a0:bb:59:24:35:6d:e5:a0:1a:3f:9c:86:81:90.
Are you sure you want to continue connecting (yes/no)? yes

1

나는이 문제가 있었고 그 이유는 매우 간단합니다 .ssh 로그인에 중복 IP 주소가 있으므로이 문제를 수정하면 모든 것이 해결됩니다.


1

내 컴퓨터에서 동일한 오류가 발생하여 known_hosts파일을 지우면 그 후에 정상적으로 작동합니다.


1
파일에 authorized_keys문제가있을 때 known_hosts파일 을 삭제하고 싶지 않습니다.
jeb

0

해결책:

1- 연결할 수없는 호스트를 나타내는 줄을 "$ HOME / .ssh / known_hosts"에서 삭제하십시오.

2- ssh-keygen -R "IP_ADDRESSorHOSTNAME"명령을 실행하십시오 ( "IP_ADDRESSorHOSTNAME"을 대상 IP 또는 대상 호스트 이름으로 대체)

3- ssh 연결 재시도 (실패한 경우 .ssh 디렉토리에 대한 권한을 확인하십시오, 700이어야 함)


0

UBUNTU (리눅스)에 대한 내 솔루션 :

1. "/home/YOUR_USERNAME/.ssh/known_hosts"에있는 "known_hosts"파일에서 컨텐츠를 삭제해야합니다.

2. "ssh-keygen -t rsa -C"your.email@example.com "-b 4096"과 같은 새 ssh 키를 생성하십시오.

3.git 저장소 (내 경우에는 gitlab) SSH 키에 새 ssh 키를 복사하여 붙여 넣습니다.

그것은 나를 위해 작동합니다!


-1

AWS EC2.

메시지에서 IP를 찾으십시오.

운영

vim /home/ec2-user/.ssh/known_hosts

화살표 키를 사용하여 메시지에서 IP를 찾아 클릭하십시오.

dd

이 줄을 삭제 한 다음 탈출을 실행합니다

:wp

이것은 당신이 갈 좋은 저장합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.