SSH를 통해 연결할 때 "원격 호스트 식별이 변경되었습니다"경고


21

오늘 서버에 로그인하려고 할 때이 메시지가 나타납니다. 어떻게해야합니까? 무슨 일이야?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.

2
또한 로컬 및 원격으로 루트로 로그인하지 않고 권한이없는 사용자를 sudo와 함께 사용하는 것이 좋습니다.
Steve Beattie

답변:


12

최근에 서버에 OS 등을 다시 설치 했습니까? 그럴 수 있습니다.

이 문제를 해결하려면 http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

해결 방법 # 1 : ssh-keygen을 사용하여 키 제거

-Rknown_hosts 파일에서 호스트 이름에 속하는 모든 키를 제거 하려면이 옵션을 사용하십시오 . 이 옵션은 해시 된 호스트를 삭제하는 데 유용합니다. 원격 호스트 이름이 server.example.com이면 다음을 입력하십시오.

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

이제 문제없이 호스트에 연결할 수 있습니다.

해결 방법 # 2 : 올바른 호스트 키 추가 /home/user/.ssh/known_hosts

known_hosts 파일 전체를 삭제할 필요는 없으며 해당 파일의 문제를 일으키는 행만 삭제하면됩니다. 예를 들어 다음과 같이 3 개의 서버가있는 경우입니다.

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

두 번째 서버 (myserver.com)를 삭제하려면 파일을 엽니 다.

# vi +2 .ssh/known_hosts

dd 명령을 눌러 줄을 삭제하십시오. 파일을 저장하고 닫습니다. 또는 다음을 사용하십시오

$ vi ~/.ssh/known_hosts

이제 2 번 줄로 이동하여 다음 명령을 입력하십시오.

:2

이제 dd로 줄을 삭제하고 종료하십시오.

dd
:wq

또는 다음과 같이 sed 명령을 사용하여 44 행에서 문제가되는 키를 삭제할 수 있습니다.

$ sed -i 44d ~/.ssh/known_hosts

해결 방법 3 : ssh 서버가 하나만있는 경우 known_hosts 파일을 삭제하십시오.

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

ssh로 다시 연결하십시오.
이제 ssh를 통해 서버를 연결할 수 있습니다.

ssh username@server-ip-here
ssh nixcraft@server1.cyberciti.biz

다음 ~/.ssh/known_hosts으로 다음과 같이 키를 추가하라는 새로운 프롬프트가 나타납니다.

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.

9
서버의 SSH 호스트 키를 변경하지 않은 경우 누군가가 중간자 (Man-in-the-Middle) 공격을 수행하여 통신을 방해하려는 징후 일 수 있으므로 호스트 키 사본을 교체 해서는 안됩니다 .
Kees Cook

7

내가 알 수 있듯이이 모든 대답은 경고를 처리하는 대신 경고를 억제하는 것에 관한 것입니다. 요컨대, 경고 메시지는 서버가 이전처럼 보이지 않는다는 것을 알려줍니다. 이것이 왜 위험 할 수 있는지 https://en.wikipedia.org/wiki/Man_in_the_middle_attack 을 참조 하십시오 .

man ssh특히이 섹션을 읽으십시오 .

호스트 키 확인

서버에 처음 연결하는 경우 StrictHostKeyChecking 옵션 이 비활성화 되지 않은 경우 서버 공개 키의 지문이 사용자에게 표시됩니다 . 지문은 ssh-keygen (1)을 사용하여 확인할 수 있습니다 .

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

안전한면을 유지하려면 연결하는 서버에서이 명령을 먼저 실행해야합니다. 그것은 당신에게 질문의 경고에 주어진 것과 같은 지문을 줄 것입니다. 물론,이 정보가없는 경우가 종종 있지만, 의심스러운 이유가있는 경우 해당 명령을 실행하면 서버 서명이 실제로 변경되었는지 또는 의심스러운 사항이 있는지 확인할 수 있습니다.


1
호스트가 md5 해시 대신 sha256 지문을 제공하는 경우이를 사용하십시오. ssh -o FingerprintHash=md5 example.org
Declan McKenna

1
더 FingerprintHash에 : superuser.com/questions/929566/... (. 즉 SHA256 선호되어야하지만 최근에 충분히 업그레이드하지 않은 경우 그 값을 알고하지 않을 수 있습니다)
unhammer

2

같은 문제가 발생하여 전체 known_hosts파일 을 삭제하지 않으려면 다음 명령을 실행할 수 있습니다.

ssh-keygen -R 10.10.10.69

known_hosts를 삭제하는 데 문제가 없습니다. 연결할 때마다 목록에 연결 한 각 서버 만 추가하면됩니다. 호스트를 아직 신뢰하지 않기 때문에 스크립트도 망칠 수 있습니다. 호스트의 서명 (일반적으로 다시 설치 또는 키 순환으로 인해 생성 된 새 키에 연결하려는 컴퓨터)이있을 때 경고가 발생합니다.


0

경고가 오 탐지라고 생각되면 / root / ssh / known_hosts를 삭제하여 새 확인을 시작할 수 있습니다.


3
이 작업을 수행하지 마십시오. 다른 알려진 호스트를 잃게됩니다. 대신, 오 탐지가 확실하면이 경우 "known_hosts : 8"행 8을 삭제하십시오.
Roger Light

0

최근에 서버를 다시 설치했거나 호스트 키를 변경 한 경우 ~ / .ssh / known_hosts 파일에서 8 행을 제거하고 서버를 다시 추가하는 것이 안전합니다 (ssh 's에 응답하여 "yes" "키 확인을 요청하면)


0

서버가 로컬 네트워크에 있으므로 확신 할 수 있습니다.

시스템을 다시 설치 한 경우 이는 정상이지만 known_hosts 파일을 제거하는 대신 수행하는 것이 좋습니다 echo "" > ~/.ssh/known_hosts


사람들은 여전히 ​​로컬 네트워크에서 트릭을 재생할 수 있습니다. 비즈니스 또는 학교 네트워크에는 신뢰할 수없는 공간이 많이있을 수 있습니다.
Azendale


0

이 줄을 복사하지만, 사용자 이름과 호스트 이름 / IP에 넣어 userremote-server:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

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

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

로컬 터미널에 붙여 넣고 실행하십시오. 이것은 나를 위해 일했습니다.


0

ssh를 발행하는 클라이언트 노드에서

vi ~/.ssh/known_hosts

ssh하려는 IP와 동일한 네트워크에있는 IP 주소로 시작하는 모든 행을 삭제하십시오. 이렇게하면 클라이언트 노드가 알려진 호스트 목록에 ECDSA를 영구적으로 추가하게됩니다.

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