본문 바로가기
Server & Network/Linux

[SSH] "REMOTE HOST IDENTIFICATION HAS CHANGED" 이슈

by AustinProd 2022. 4. 16.

AWS 환경에서 Bastion 서버를 사용해 ssh 터널링 접근을 하게 될 경우 해당 이슈를 접할 수 있다. 오늘은 이 문제가 어떻게, 왜 발생하는지. 그리고 어떻게 해결할 수 있는지 정리한다.

 

에러 화면

아래 코드블록은 bastion 서버의 3004번 터널링 포인트로 접근을 시도했을 때, 실제로 접근이 거부된 터미널 메세지다. "Remote host identification has changed." 라는 원격 서버 호스트 인증 실패 메세지가 리턴되었다. 접근 포트와 아이피, 펨키를 잘 명시해줬음에도 접근이 거부된 상황이다.

 

# ssh 접근 시도 (ubuntu = 접근 pc 사용자, 터널링 포인트 = 3004)
ssh -i ~/[ pem 키 ] ubuntu@localhost -p 3004

# 접근 거부 메세지
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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:axC87vCzd234dD3Sf44cjbs6SF5LD72eNGgRQe7aKg.
Please contact your system administrator.
Add correct host key in /Users/my-pc/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/my-pc/.ssh/known_hosts:102
ECDSA host key for [localhost]:3004 has changed and you have requested strict checking.
Host key verification failed.

 

원인

본론부터 얘기하면 문제 원인은 과거에 사용했던 터널링 포인트의 캐시 데이터가 남아있고, 그게 중복되었음에 있다. 예전에 다른 bastion 서버에서 같은 터널링 포인트를 사용했다면, 그 정보가 로컬 PC에 남아 지금 접속하고자 하는 인증을 방해하는 것이다.

 

나 같은 경우 개발 프로젝트에 따라 여러 bastion 서버를 넘나들며 사용하다보니 과거에 사용했던 3004번 터널링 넘버가 지금 접속하는 3004번과 충돌해서 발생했다. 과거 ssh 인증 데이터가 남아있다 보니 새로이 접근하는 서버의 인증 정보(예를 들어, pem key)가 불일치하면서 에러가 발생했다.

 

해결 방법

문제 해결 방법은 매우 간단하다. 우선 터미널 에러 메세지를 살펴보면 /Users/my-pc/.ssh 경로에서 known_hosts 파일의 102번 라인을 확인할 것을 알려준다.

 

# 해당 경로에 호스트 키를 확인하라는 메세지가 명시되어 있다.
Add correct host key in /Users/my-pc/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/my-pc/.ssh/known_hosts:102

 

해당 경로로 이동해서 vi 에디터를 열면 정확히 102번 라인에 예전 ssh 접속 정보가 남아있다. 이 값은 예전 ssh 터널링 접근 정보이고, 지금 접속을 막는 원인이기 때문에 에디터 dd 명령어로 라인 전체를 삭제하면 된다.

 

 

삭제 후 파일을 저장(:wq!)하면, ssh 터널링 접속이 잘되는 것을 확인할 수 있다.

댓글