AWS/EC2

[SSH] SSH 접속 에러

BigCo 2023. 7. 20. 18:07

오늘은 SSH접속을 하다가 에러가 났습니다. 

제가 Private IP를 고정시켜서 사용하던 중 생긴 오류 같습니다. 그래서 기록을 해두려고 간단한 아키텍처를 구성했습니다.

 

문제의 발단은 퍼블릭서브넷에는 bastion 서버를 생성했고, 프라이빗서브넷에는 웹서버를 생성하여 private IP를 고정시켜서 사용하고 있었습니다. 

그리고 SSH로 접속을 하며 여러 작업을 하다가 문제가 생겨서 Web Server를 삭제했다가 다시 생성했습니다.

당연히 다시 만든 web server도 동일한 IP를 고정하여 생성했습니다. 그리고 다시 ssh로 접속을 했는데 해당 에러가 떴습니다.

이 에러의 원인은 이전에 한번 접속했던 IP의 서버와 RSA공유키를 교환 후, 서버의 교체나 IP번경을 한 경우 기존 서버의 키 정보가 남아있어 충돌이 발생하여 생기는 겁니다.

좀 더 자세하게 설명하면 SSH는 처음 원격 호스트에 연결할 때 그 호스트의 공개 키를 받아서 known_hosts 파일에 저장합니다. 그런 다음에는 항상 동일한 원격 호스트에 연결할 때마다 해당 호스트의 키를 known_hosts 파일에 저장된 키와 비교합니다.

 

 

"REMOTE HOST IDENTIFICATION HAS CHANGED"라는 경고는 보통 다음과 같은 상황에서 발생합니다

1. 해당 IP를 사용하는 서버가 변경되었습니다. 이는 서버가 재설치되었거나, 서버가 새로 할당받은 IP를 사용하게 되었을 때 발생할 수 있습니다.

2. 누군가가 공격자로서 네트워크 트래픽을 가로채려고 "man-in-the-middle" 공격을 시도하고 있습니다.

보통 첫 번째 경우가 대부분이며, 이 경우에는 간단하게 known_hosts 파일에서 해당 호스트 키를 제거하면 해결됩니다. 

그래서 키 값을 초기화하고 다시 ssh접속을 하면 됩니다.

ssh-keygen -R [IP입력]

 

 

 

접속할 인스턴스 생성(Private IP고정)

 

Private IP를 고정시켜 인스턴스를 생성합니다.

 

이렇게 다시 생성된(전 서버와 IP같음) 서버로 로그인을 하려고 하니 에러가 납니다.

 

그래서 해당 명령어를 입력해서 호스트키를 제거합니다.

 

 

그리고 다시 ssh접근하면 완료!

 

 

참고자료