[Linux] 원격 호스트 신원이 변경되었음을 경고하는 메시지의 조치 방법
SSH 프로토콜을 기반으로 실행되던 ssh, scp, sftp 등의 명령어들이 어느 날 갑자기 아래와 같은 메세지(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)가 출력되면서 실행되지 않을 때가 있습니다. 아래 예제는 known_hosts
파일의 일곱 번째 줄에 등록된 호스트 키에 문제가 있다는 내용입니다.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 ECDSA key sent by the remote host is SHA256:UQ9EBP44E7VPLJ8eV85Hyysm3EwSbBcph0NhLA0OOBU. Please contact your system administrator. Add correct host key in /home/oracle/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/oracle/.ssh/known_hosts:7 ECDSA host key for 192.168.56.101 has changed and you have requested strict checking. Host key verification failed. lost connection
먼저 조치 방법을 알려 드리면, ssh-keygen -R 192.168.56.101
명령어를 실행하고 재접속하면 아래와 같이 정상적으로 진행됩니다.
The authenticity of host '192.168.56.101 (192.168.56.101)' can't be established. ECDSA key fingerprint is SHA256:UQ9EBP44E7VPLJ8eV85Hyysm3EwSbBcph0NhLA0OOBU. ECDSA key fingerprint is MD5:c2:ac:e4:c1:9d:aa:1e:9c:41:0a:07:fd:54:4e:c3:53. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.101' (ECDSA) to the list of known hosts. username@192.168.56.101's password:
“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!” 메세지는 원격 호스트가 재설치되거나 SSH를 재구성했을 때 발생하며, 아래와 같은 과정으로 메시지가 발생합니다.
- 클라이언트는 원격 서버에 처음 접속할 때 서버의 호스트 키를 받아 ~/.ssh/known_hosts 파일에 저장합니다.
- 이후 동일한 서버에 접속할 때 클라이언트는 서버가 제공하는 호스트 키와 known_hosts 파일에 저장된 키를 비교합니다.
- 호스트 키가 일치하지 않으면, 클라이언트는 보안 위협을 경고하는 메시지를 출력합니다. 이 메시지는 중간자 공격(man-in-the-middle attack) 가능성을 경고하는 역할도 합니다.
참고로 known_hosts
파일에 저장되는 호스트 키는 사용자가 액세스하는 호스트의 공개 키입니다. SSH의 키 기반 인증으로 원격 접속과 파일 전송 글을 보시면 호스트 키가 작동하는 원리를 확인하실 수 있습니다.