"경고: 원격 호스트 식별이 변경되었습니다!" 수정 방법

게시 됨: 2024-10-16
목차
  • 경고 이해
  • 서버의 신원 확인
  • 해결 방법 1: 이전 호스트 키를 수동으로 제거(Windows, Mac, Ubuntu)
  • 해결 방법 2: 전체 Known_hosts 파일 지우기(Windows, Mac, Ubuntu)
  • 해결 방법 3: 일시적으로 호스트 키 확인을 무시합니다(Windows, Mac, Ubuntu)
  • 해결 방법 4: 새 호스트 키를 수동으로 추가(Windows, Mac, Ubuntu)
  • 해결 방법 5: DNS 또는 IP 주소 변경 사항 확인(Windows, Mac, Ubuntu)
  • 향후 이 문제를 방지하기 위한 모범 사례(Windows, Mac, Ubuntu)
  • 결론

SSH를 사용하여 원격 서버에 연결하려고 하면 "경고: 원격 호스트 식별이 변경되었습니다!" 라는 오류 메시지가 나타날 수 있습니다. . 이 메시지는 제3자가 서버와의 통신을 가로챌 수 있는 중간자 공격으로부터 사용자를 보호하기 위해 SSH가 사용하는 보안 기능입니다.

간단히 말해서 이 경고는 서버의 지문(로컬 시스템에 저장된 고유 식별자)이 이전에 SSH가 기록한 지문과 일치하지 않음을 알려줍니다. 서버가 다시 설치되거나 IP 주소가 변경되는 등 합법적인 변경일 수도 있지만 잠재적인 보안 위협을 나타낼 수도 있습니다. SSH는 서버의 신뢰성을 확인할 때까지 시스템을 보호하기 위해 연결을 차단합니다.

이 문서에서는 Mac , Ubuntu(Linux)Windows 시스템에서 이 문제를 안전하게 해결하여 잠재적인 위험을 무시하지 않고 계속해서 안전하게 연결할 수 있는 방법을 안내합니다.

다음 내용을 읽어 보세요. 권한 거부 오류를 수정하는 방법(Publickey)

경고 이해

경고가 나타나는 이유는 무엇입니까?

SSH는 로컬 시스템의 known_hosts 라는 파일에 원격 서버 키의 지문을 저장합니다. 이 지문은 SSH를 사용할 때마다 동일한 서버에 연결하고 있는지 확인하는 데 사용됩니다. 서버의 지문이 변경되면 서버의 ID가 합법적으로 변경되었는지 또는 누군가가 연결을 가로채려고 시도하는지 확신할 수 없기 때문에 SSH는 경고를 표시합니다.

경고에 대한 일반적인 시나리오:

  • 서버 재설치 또는 업그레이드: 서버가 재설치, 재설정 또는 업그레이드된 경우 known_hosts 파일에 저장된 것과 일치하지 않는 새 SSH 키가 생성될 수 있습니다.
  • IP 주소 변경: 서버의 IP 주소가 변경된 경우(예: 새로운 호스팅 공급자 또는 네트워크로 이동하여) SSH는 이를 의심스러운 변경으로 표시할 수 있습니다.
  • DNS 변경: 서버의 DNS 레코드에 업데이트나 구성 오류가 있는 경우 SSH는 이를 다른 서버로 해석할 수 있습니다.
  • 서버 구성 변경: 때때로 서버 관리자가 SSH 키 구성을 변경하여 이전 키와 일치하지 않는 새 키가 생성되는 경우가 있습니다.
  • 잠재적인 보안 위협(중간자 공격): 경고는 누군가가 서버 연결을 가로채려고 한다는 신호일 수 있습니다. 변경 사항이 확실하지 않은 경우 계속하기 전에 서버의 신원을 확인하는 것이 중요합니다.

known_hosts 파일의 역할:

known_hosts 파일은 SSH가 이전에 연결한 원격 호스트에 대한 정보를 저장하는 곳입니다. 이 파일은 일반적으로 Mac 및 Ubuntu의 ~/.ssh/ 디렉터리에 있으며, Windows의 PuTTY 사용자의 경우 Windows 레지스트리에 호스트 키를 저장합니다.

서버의 신원 확인

" 원격 호스트 식별이 변경되었습니다! " 문제를 해결하기 위해 변경하기 전에 ” 경고, 서버의 신원이 합법적으로 변경되었는지 확인하는 것이 중요합니다. 이 단계를 통해 중간자 공격의 희생양이 되지 않도록 할 수 있습니다.

서버의 신원을 먼저 확인해야 하는 이유

이 단계를 무시하면 손상되거나 악의적인 서버에 연결되어 데이터나 자격 증명이 위험에 빠질 수 있습니다. 항상 이 경고를 심각하게 다루십시오. 특히 서버의 최근 변경 사항이 확실하지 않은 경우에는 더욱 그렇습니다.

서버의 신원을 확인하는 단계:

  • 서버 관리자에게 문의: 서버를 유지 관리하는 사람이 아닌 경우 관리자나 호스팅 공급자에게 연락하여 IP 주소 변경, 서버 재설치 또는 키 재생성과 같은 최근 변경 사항이 있는지 문의하세요.
  • 호스트 키 지문 비교: 서버의 호스트 키를 수동으로 확인하려면 다음 명령을 사용하십시오.
     ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

    출력에는 known_hosts 파일의 지문과 비교하거나 서버 관리자에게 요청할 수 있는 호스트 키 지문이 표시됩니다.

해결 방법 1: 이전 호스트 키를 수동으로 제거(Windows, Mac, Ubuntu)

Mac 및 Ubuntu(Linux)의 경우:

  1. 터미널을 엽니다.
  2. 텍스트 편집기를 사용하여 ~/.ssh/known_hosts 파일을 엽니다.
     nano ~/.ssh/known_hosts
  3. 원격 서버의 호스트 이름이나 IP 주소에 해당하는 줄을 검색하세요.
  4. 이전 호스트 키가 포함된 줄을 삭제합니다.
  5. 파일을 저장하고 텍스트 편집기를 닫습니다.
  6. SSH를 사용하여 서버에 다시 연결합니다.
     ssh <username>@<hostname>

자동 제거(Mac 및 Ubuntu):

known_hosts 파일을 수동으로 편집하는 대신 다음 명령을 사용하여 이전 호스트 키를 자동으로 제거할 수 있습니다.

 ssh-keygen -R <hostname or IP>

Windows의 경우(PuTTY 사용):

  1. PuTTY를 엽니다.
  2. Windows + R을 누르고 regedit 입력한 후 Enter를 누릅니다.
  3. 레지스트리 경로로 이동합니다.
     HKEY_CURRENT_USER\Software\Myusername\PuTTY\SshHostKeys
  4. 원격 서버의 호스트 이름 또는 IP 주소와 관련된 항목을 찾습니다.
  5. 항목을 마우스 오른쪽 버튼으로 클릭하고 삭제 를 선택합니다.
  6. PuTTY에서 서버에 다시 연결하면 새 키를 수락하라는 메시지가 표시됩니다.

Windows의 경우(Git Bash 사용):

  1. Git Bash를 엽니다.
  2. 다음 명령을 실행하십시오.
     ssh-keygen -R <hostname>
  3. SSH는 다음에 연결할 때 새 키를 수락하라는 메시지를 표시합니다.

해결 방법 2: 전체 known_hosts 파일 지우기(Windows, Mac, Ubuntu)

Mac 및 Ubuntu(Linux)의 경우:

  1. 터미널을 엽니다.
  2. 다음 명령을 실행하여 known_hosts 파일 전체를 제거합니다.
     rm ~/.ssh/known_hosts
  3. SSH를 사용하여 원격 서버에 다시 연결합니다.
     ssh <username>@<hostname>

Windows의 경우(PuTTY 사용):

  1. PuTTY를 엽니다.
  2. Windows + R 을 누르고 regedit 입력한 다음 Enter를 눌러 레지스트리 편집기를 엽니다.
  3. 다음으로 이동하세요:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  4. SshHostKeys 폴더를 마우스 오른쪽 버튼으로 클릭하고 삭제를 선택합니다. 이렇게 하면 저장된 모든 호스트 키가 제거됩니다.
  5. PuTTY를 사용하여 서버에 다시 연결하면 새 호스트 키를 수락하라는 메시지가 표시됩니다.

Windows의 경우(Git Bash 사용):

  1. Git Bash를 엽니다.
  2. 다음을 실행하여 known_hosts 파일을 제거합니다.
     rm ~/.ssh/known_hosts
  3. SSH를 사용하여 서버에 다시 연결하면 새 호스트 키를 수락하라는 메시지가 표시됩니다.

해결 방법 3: 일시적으로 호스트 키 확인을 무시합니다(Windows, Mac, Ubuntu)

서버에 빠르게 연결해야 하고 이전 호스트 키를 수동으로 제거할 시간이 없는 경우 일시적으로 호스트 키 확인을 우회할 수 있습니다. 이 방법은 긴급하게 작동하지만 잠재적인 보안 위험에 노출될 수 있으므로 일반적인 사용에는 권장되지 않습니다 .

Mac 및 Ubuntu(Linux)의 경우:

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Windows의 경우(Git Bash 사용):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Windows의 경우(PuTTY 사용):

  1. PuTTY를 엽니다.
  2. 연결 > SSH > 호스트 키로 이동합니다.
  3. Always accept 를 선택하여 호스트 키 확인을 비활성화합니다.
  4. 호스트 키를 확인하지 않고 서버에 다시 연결합니다.

해결 방법 4: 새 호스트 키를 수동으로 추가(Windows, Mac, Ubuntu)

Mac 및 Ubuntu(Linux)의 경우:

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Windows의 경우(Git Bash 사용):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Windows의 경우(PuTTY 사용):

불행하게도 PuTTY에는 ssh-keyscan 과 직접적으로 동등한 기능이 없습니다. 호스트 키를 수동으로 추가하려면 서버에 연결하고 PuTTY가 새 호스트 키를 묻는 메시지를 표시하도록 허용해야 합니다.

해결 방법 5: DNS 또는 IP 주소 변경 사항 확인(Windows, Mac, Ubuntu)

Mac 및 Ubuntu(Linux)의 경우:

 nslookup <hostname>
 dig <hostname>

Windows의 경우(Git Bash 사용):

 nslookup <hostname>
 dig <hostname>

Windows의 경우(PuTTY 사용):

  1. 명령 프롬프트 또는 PowerShell을 엽니다.
  2. DNS 또는 IP 주소를 확인하려면 다음 명령을 사용하십시오.
     nslookup <hostname>
  3. 출력의 IP 주소를 PuTTY가 레지스트리에 표시하는 것과 비교하십시오.
  4. IP 주소가 변경된 경우 다음으로 이동하여 PuTTY 레지스트리에서 이전 호스트 키를 삭제합니다.
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  5. PuTTY를 통해 다시 연결하면 새 키를 수락하라는 메시지가 표시됩니다.

향후 이 문제를 방지하기 위한 모범 사례(Windows, Mac, Ubuntu)

  • 고정 IP 주소 사용: 경고를 유발할 수 있는 예기치 않은 변경을 방지하려면 고정 IP 주소로 서버를 구성하십시오.
  • known_hosts 정기적으로 정리 또는 업데이트 : 오래되었거나 사용되지 않는 호스트 키를 정기적으로 검토하고 정리합니다.
  • SSH 인증서 사용 고려: 확장 가능한 호스트 키 관리를 위해 SSH 인증서를 사용하면 이 경고가 발생할 가능성이 줄어듭니다.
  • DNS 또는 IP 변경 사항 모니터링: DNS 레코드 또는 IP 주소의 변경 사항을 감시하고 그에 따라 known_hosts 업데이트합니다.

결론

"원격 호스트 식별이 변경되었습니다!" 경고는 원격 서버의 신원을 확인하여 무단 액세스를 방지하는 SSH의 필수 보안 기능입니다. 놀랄 수도 있지만 변경을 진행하기 전에 서버의 신원을 확인하는 데 필요한 단계를 수행하는 것이 중요합니다.

이 문서에 설명된 솔루션을 사용하면 Windows , Mac 또는 Ubuntu를 사용하는 경우 경고를 안전하게 해결할 수 있습니다. 항상 서버의 신뢰성을 먼저 확인한 다음 이전 호스트 키 제거, known_hosts 파일 지우기, 일시적으로 검사 우회 등 상황에 가장 적합한 솔루션을 선택하십시오.

또한 고정 IP 주소 사용, known_hosts 정기적 업데이트, SSH 인증서 고려 등의 모범 사례를 따르면 향후 이 문제의 발생을 최소화하는 데 도움이 될 수 있습니다.