Server & OS/Linux

[Linux] SSH 접속 시 "REMOTE HOST IDENTIFICATION HAS CHANGED!" 해결

1nfra 2021. 3. 15. 12:47
서버를 재설치하거나 IP를 다른 서버에 다시 쓰면 호스트 키가 바뀌어 SSH 접속이 거부됩니다. 서버가 바뀐 이유를 알고 있다면 ssh-keygen -R로 known_hosts의 이전 키를 지우고 다시 접속하면 됩니다.

1. 증상

SSH로 접속할 때 아래 경고가 나오며 연결이 끊깁니다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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.
...
Add correct host key in ~/.ssh/known_hosts to get rid of this message.
Offending key in ~/.ssh/known_hosts:1
RSA host key for (IP) has changed and you have requested strict checking.
Host key verification failed.

2. 원인

SSH 클라이언트는 처음 접속한 서버의 호스트 키를 ~/.ssh/known_hosts에 저장하고, 다음 접속부터 같은 키인지 확인합니다. 서버를 재설치했거나 같은 IP에 다른 서버를 올리면 키가 달라져 이 경고가 나옵니다.

서버를 바꾼 적이 없는데 이 경고가 나온다면 중간자 공격일 수 있으므로 키를 지우기 전에 먼저 확인해야 합니다.

3. 해결

known_hosts에 저장된 해당 서버의 이전 키를 지웁니다.

ssh-keygen -R IP_또는_도메인

다시 SSH로 접속하면 새 호스트 키를 저장할지 묻고, 정상적으로 접속됩니다.

4. 정리

  • 원인은 known_hosts에 저장된 호스트 키와 서버의 현재 키가 다르기 때문입니다.
  • 서버 변경이 확실할 때만 ssh-keygen -R로 이전 키를 지웁니다.
728x90