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.