기술 가이드 · 실용 가이드
SSH에 ‘REMOTE HOST IDENTIFICATION HAS CHANGED’가 뜨면? 이전 키를 지우기 전에 대상과 지문부터 확인
경고를 없애려고 known_hosts를 삭제하거나 검사를 끄지 마세요. SSH가 실제로 사용한 호스트명, 주소, 포트, 점프 경로와 신뢰 파일을 확인하고 별도의 신뢰 채널에서 예상 지문을 받으세요. 정확히 일치할 때만 오래된 기록을 제거합니다.

SSH 호스트 키 경고는 단순 연결 오류가 아니라 신원 확인 실패입니다. 로컬 신뢰 기록을 바꾸기 전에 어느 서버에 도달했고 그 서버가 어떤 키를 제시해야 하는지 확인해야 합니다.
경고를 장애가 아니라 증거로 보기
OpenSSH는 서버의 공개 호스트 키를 known_hosts에 저장합니다. 같은 대상이 다른 키를 제시하면 재구축, 키 교체, 이동, 대체 또는 가로채기인지 알 수 없어 연결을 거부합니다. 정리 전에 신원을 확인하세요.
경고 전체에서 호스트명, IP, 포트, 키 유형, SHA256 지문, 파일과 줄 번호를 보관합니다. VS Code Remote SSH, Git, rsync, IDE는 다른 설정, 포트, 점프 호스트나 신뢰 파일을 쓸 수 있습니다.
1. SSH가 실제로 도달한 대상 확인
`ssh -G host`의 `hostname`, `port`, `proxyjump`, `proxycommand`, `userknownhostsfile`, `globalknownhostsfile`을 확인합니다. 별칭이 다른 DNS 이름, 점프 호스트 뒤의 사설 주소, 비표준 포트를 가리킬 수 있습니다.
평소 네트워크 경로에서 이름을 해석하고 경고, 자산 목록, 클라우드 콘솔 또는 관리자 기록과 비교합니다. VPN 분할 DNS, 로드밸런서, 재사용된 주소, 점프 호스트가 다른 머신으로 보낼 수 있습니다. 경로를 설명할 수 없으면 중단합니다.
`hostkeyalias`도 확인하세요. 설정되어 있으면 호스트 키 데이터베이스는 실제 호스트명 대신 이 별칭으로 조회합니다. 명령행 별칭을 저장 이름으로 단정하지 말고 SSH가 표시한 신뢰 대상과 파일을 사용하세요.
2. 별도 신뢰 채널에서 예상 지문 확보
인증된 공급자 콘솔, 직렬/복구 콘솔, 구성 관리 기록 또는 확인된 관리자를 사용합니다. 관리자는 서버 콘솔에서 `ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub`와 다른 활성 키에 해당하는 명령을 실행할 수 있습니다.
알고리즘과 완전한 SHA256 지문을 요청합니다. 유지보수 공지는 교체 이유일 뿐 지문을 대신하지 않습니다. `ssh-keyscan`은 현재 경로가 제시하는 키를 관찰하지만 독립적인 신원 증명은 아닙니다.
3. 같은 알고리즘끼리 비교
ED25519는 ED25519, RSA는 RSA, ECDSA는 ECDSA와 비교합니다. 한 알고리즘만 교체되어 다른 저장 키가 유효할 수 있으므로 클라이언트가 협상한 키를 확인합니다.
대상이 설명되고 표시 지문이 별도 채널의 값과 정확히 일치할 때만 진행합니다. 다르면 관리자에게 문의하고 기존 기록을 보존합니다. 줄 번호는 진단 정보이지 신뢰 허가가 아닙니다.
4. 정확한 known_hosts 기록 찾기
표시된 파일을 백업하고 `ssh-keygen -F host`를 실행합니다. 비표준 포트는 `ssh-keygen -F '[host]:2222'`, 저장된 IP도 별도로 확인합니다. `-F`는 해시된 호스트명도 찾습니다.
다른 신뢰 파일이면 `-f /path/to/file`을 추가합니다. 시스템 파일은 관리자 권한이 필요할 수 있습니다. 점프 호스트가 있으면 경고가 점프 호스트인지 최종 대상인지 먼저 구분합니다.
5. 확인된 오래된 대상만 제거
지문 일치와 정당한 이유를 확인한 뒤 `ssh-keygen -R host`, 비표준 포트는 `ssh-keygen -R '[host]:2222'`를 실행하고 필요하면 `-f`를 추가합니다. 호스트명과 IP 기록은 각각 확인합니다.
새 연결 검증이 끝날 때까지 백업을 유지합니다. `~/.ssh/known_hosts` 전체 삭제, 광범위한 줄 삭제, StrictHostKeyChecking 비활성화는 증거와 다른 서버 보호를 없앱니다.
`ssh-keygen -R`은 선택한 파일에서 해당 호스트명 또는 [호스트명]:포트에 속한 모든 키를 지웁니다. 변경된 알고리즘 하나만 제거하지 않습니다. 모든 일치 기록을 먼저 검토하고 관리 대상 기록이나 다른 알고리즘의 유효성이 불분명하면 관리자에게 맡기세요.
6. 한 번 재연결하고 다시 검증
대화형으로 재연결해 대상과 알고리즘을 확인한 뒤 표시 지문을 신뢰 값과 다시 비교하고 수락합니다. 변경 원인, 신뢰 출처, 이전/새 지문, 시각, 승인자를 기록합니다.
키가 다시 바뀌거나 동일 이름의 백엔드가 설명되지 않는 키를 제시하거나 특정 클라이언트/네트워크에서만 경고하면 중단합니다. DNS 불일치, 로드밸런서, 비정상 프록시, 다른 신뢰 파일 또는 보안 사고일 수 있습니다.
정상 변경과 에스컬레이션 조건
고정 IP를 유지한 VM 재구축, 문서화된 키 교체, 이미지 복원, 장비 교체, 별칭 이동은 정상일 수 있습니다. 그래도 운영 책임자가 대상과 지문을 확인해야 합니다.
예고가 없거나 신뢰 콘솔에서 지문을 얻지 못하거나 DNS/경로가 바뀌었거나 지문이 다르거나 키가 반복 변경되면 즉시 에스컬레이션합니다. 신원이 해결되기 전에는 자격 증명을 입력하지 마세요.
