SSH 접속 오류 \[ WARNING : REMOTE HOST IDENTIFICATION HAS CHANGED \]

김예은·2025년 1월 5일
0

트러블슈팅

목록 보기
1/2

서버에 접속하려고 했더니 다음과 같은 오류와 만났다.

이런 오류 심심찮게 마주하는데 항상 같은 오류를 만나면서 매번 붕어가 되어 다시 해결하는 내가 지겨워서 한 번에 정리하고자 정리하였다.

이 경고 메시지는 SSH를 통해 EC2 인스턴스에 접속하려고 할 때, 원격 호스트의 SSH 키가 변경되었거나 충돌이 발생했을 때 나타나는 메시지다.

대략 내용은 원격 호스트 식별 정보가 변경되었다는 것이다. 기존에 등록되어있던 RSA key가 다르다. 누군가 기존 접속 정보를 바꾸어 정보를 가로채는 man-in-the-middle attack 에 발생에 유의해라. 해당 경고를 제거하려면 /root/.ssh/known_hosts 올바른 Host Key를 추가해라.

SSH knwon_hosts 란?

명칭과도 같이 알려진 호스트 정보를 말한다. 쉽게 기존에 자신이 ssh를 통해 접속 했다면, 해당 서버의 key를 받아 로컬에 저장하고 있는 구조이다.

따라서 해당 known_hosts 파일을 열어보면 아래와 같이 기존에 접속했던 사이트들의 ssh-rsa 키 값들이 정리가되었는걸 볼 수 있다.

원인

  1. 인스턴스 재생성: 기존 인스턴스를 삭제하고 동일한 IP를 가진 새 인스턴스를 시작한 경우.
  2. 호스트 키 변경: EC2 인스턴스의 호스트 키가 재생성되었거나 SSH 설정이 변경된 경우.
  3. IP 주소 재사용: 동일한 IP 주소를 다른 인스턴스에서 사용한 경우.
  4. 파일 경로 문제: BakeryServer.pem 파일이 잘못된 경로에 있거나 누락된 경우.

해결 방법

1. Host Key 문제 해결

  • SSH에서 known_hosts 파일에 저장된 기존 호스트 키와 새 키가 충돌하여 발생합니다. 문제를 해결하려면 known_hosts 파일에서 관련 엔트리를 제거해야 합니다.
  1. known_hosts 파일 경로로 이동:
    • Windows에서: C:\\Users\\LG\\.ssh\\known_hosts
    • Mac/Linux에서: ~/.ssh/known_hosts
  2. 관련된 엔트리 삭제:
    • 문제 메시지에 따르면, 문제가 있는 엔트리는 라인 22에 있습니다. 이 라인을 삭제합니다.
    • 직접 삭제하거나 아래 명령어를 사용:
    • ssh-keygen -R ec2-(IP주소).ap-northeast-2.compute.amazonaws.com
    • 이 명령은 해당 호스트와 관련된 키를 known_hosts에서 삭제합니다.
  3. SSH 재접속:
    • 삭제 후 다시 접속을 시도합니다. 새 호스트 키를 확인하라는 메시지가 표시되며, 이를 수락하면 연결됩니다.

2. 키 파일(.pem) 경로 문제 해결

메시지에 나오는 BakeryServer.pem 파일이 없거나 경로가 잘못된 경우 이를 수정해야 합니다.

  1. 키 파일 경로 확인:
    • 키 파일이 올바른 경로에 있는지 확인합니다.
    • 예: C:\\Users\\LG\\Documents\\BakeryServer.pem 또는 다른 경로.
  2. 경로를 명시적으로 지정: SSH 명령에서 i 옵션으로 정확한 경로를 지정합니다:
  3. ssh -i "C:/Users/LG/Documents/BakeryServer.pem" ubuntu@ec2-(IP주소).ap-northeast-2.compute.amazonaws.com
  4. 키 파일 권한 설정:
    • SSH 키 파일은 적절한 권한으로 설정되어야 합니다.
    • Windows:
      • 오른쪽 클릭 → "속성" → "보안" → 권한 제한.
    • Linux/Mac:
    • chmod 400 BakeryServer.pem

3. Man-in-the-Middle 경고 무시 (비추천)

보안 경고를 무시하고 계속하려면 다음 옵션을 사용할 수 있습니다. 하지만 보안 위험이 있으므로 실제 문제를 해결한 후 사용하는 것이 좋습니다.

ssh -o StrictHostKeyChecking=no -i "BakeryServer.pem" ubuntu@ec2-(IP주소).ap-northeast-2.compute.amazonaws.com

결론

  1. known_hosts 파일에서 충돌을 일으키는 기존 호스트 키를 삭제하세요.
  2. .pem 파일이 올바른 경로에 있는지 확인하고, 명령에 경로를 명시하세요.
  3. SSH를 다시 시도하면서 새 키를 저장하도록 합니다.

위 3가지 방법 중 우리는 known_hosts 파일에서 충돌을 일으키고 있었으므로, 1번 방식을 선택하였다.

충돌되는 파일을 수정한 것을 확인할 수 있다.

profile
소프트웨어공학 / 정보통신공학

0개의 댓글

관련 채용 정보