SSH / VNC 가이드 2026년 5월 6일

2026년 HK / JP / KR / SG / US 사이에서 ProxyMac Mac mini를 옮긴 뒤 known_hosts·호스트 키·신뢰 초기화

ProxyMac 엔지니어링 팀 2026년 5월 6일 약 12분 읽기

Apple Silicon M4 미니를 홍콩·일본·한국·싱가포르·미국에 두고 운영하다 보면 DNS를 바꾸거나 인스턴스를 재빌드·메트로 간 이전을 하게 되고, 그때 OpenSSH는 REMOTE HOST IDENTIFICATION HAS CHANGED라는 악명 높은 배너를 띄웁니다. 이는 “애플이 SSH를 망가뜨렸다”는 뜻이 아니라, ~/.ssh/known_hosts에 예전 공개 키 지문이 남아 있는데 서버가 새 키를 제시해 클라이언트가 거절하는 상황입니다. 이 글에서는 (1) 일상 운영에서 MITM보다 이전이 신뢰를 더 자주 깨는 이유, (2) 양호한 로테이션과 레드팀 시나리오를 가르는 신호 표, (3) 호스트명·IP·리졸버 현실을 맞추는 3열 검증 매트릭스, (4) 맹목적인 StrictHostKeyChecking=no 대신 쓸 8단계 런북, (5) 비밀 관리가 정상화된 뒤 UpdateHostKeys와 선택적 SSH 인증서를 얹는 방법을 설명합니다. 호스트명이 네트워크와 함께 바뀔 때는 DNS 리졸버 실패, 크로스 리전 지연 튜닝, 바스티온 라우팅 글과 함께 읽으면 맥락이 맞습니다.

엔지니어링 조직은 보통 “접속만 되면 된다”는 단계를 넘어, 변경 관리·감사 추적·온콜 런북까지 같은 문장으로 묶습니다. 호스트 키 이슈는 겉보기엔 작아 보이지만, 잘못된 지문을 승인하면 이후 모든 세션이 공격자에게 노출될 수 있으므로 재현 가능한 절차가 필수입니다. 특히 금융·의료·공공 고객은 티켓 번호와 지문을 1:1로 연결하라고 요구합니다—여기서 소홀히 하면 분기 말 컴플라이언스 점검에서 같은 논쟁을 반복합니다.

마지막으로, 리전 이동은 종종 동시에 VPN 분할, 새로운 프라이빗 DNS, 점프 호스트 FQDN 변경을 동반합니다. 이 세 가지가 겹치면 단순히 known_hosts 한 줄을 지우는 것만으로는 부족하고, Match exec 조건이나 사내 CA 체인까지 다시 점검해야 합니다. 아래 단계는 그 복잡도를 줄이기 위한 체크리스트입니다.

리전·호스트명 이전 직후 known_hosts 경고가 급증하는 이유

OpenSSH는 명령줄에 입력한 문자열을 키로 신뢰를 저장합니다. 어제는 mini-hk-01.provider.example로 붙었는데 오늘 재무팀이 같은 시리얼을 mini-sg-07.provider.example로 쓰라고 하면, 노트북은 옛 이름 아래의 공개 키를 기억합니다. 한편 공급자는 OS 재설치 후 ed25519 호스트 키를 합법적으로 돌렸을 수 있습니다—신뢰를 IP에만 묶어 두면 재해 복구 때 IPv4 풀이 바뀌며 고통이 배가됩니다.

또한 팀마다 ssh 래퍼 스크립트, gcloud compute ssh류 도구, IDE 내장 터미널이 각기 다른 별칭을 쓰면, 한 사람의 known_hosts에는 동일 실물에 대한 중복·상충 항목이 쌓입니다. 이 경우 “한 줄만 지웠는데도” 경고가 남는 이유는 다른 별칭으로 저장된 키가 아직 살아 있기 때문입니다.

  • 수치: 지원 데스크 기준 “이전 후 SSH 깨짐” 티켓의 대략 30–45%는 ACL이나 지연이 아니라 오래된 지문 한 줄 때문입니다(DNS TTL이 안정된 뒤 측정).
  • 도구: CI는 UserKnownHostsFile=/dev/null을 박아 두는 경우가 많고, 개발자 로컬은 반대 기본값이라 스테이징은 통과하고 노트북만 실패합니다.
  • 사람: ssh-keygen -R [hostname]만 하고 괄호 있는 IP 변형을 안 지우면, ProxyJump가 DNS 이름 사이를 튕길 때 또 다른 경고가 납니다.
기억하세요: 호스트 키는 서버를 인증할 뿐 사용자 비밀번호를 인증하지 않습니다. 이전 직후 불일치는 보통 서버가 바뀌었음을 뜻하며, 비밀번호 만료와 동일하지 않습니다.

운영 관점에서는 “경고가 떴다”는 사실 자체를 SOC에 즉시 올리기보다, 먼저 공급자 상태 페이지와 유지보수 창을 대조하는 것이 낫습니다. 다만 문서화된 창이 없는데 키가 수시간마다 바뀐다면 별도 에스컬레이션 경로를 밟아야 합니다.

신호 표: 정상 로테이션과 악의적 가로채기

신호양호한 로테이션 가능성 높음입증 전까지 침해로 간주
공급자 변경 로그·유지보수 창 공지예—패치 후 재빌드형 로테이션문서된 창 없이 시간당 키 전환
지문이 서명된 공지와 일치서명 체인 검증 후 수용대역 외 확인이 전혀 없음
내 노트북만 불평·VPN 동료는 동일 키로컬 캐시 stale리전별로 다른 A 레코드(스플릿 브레인 DNS)
무관한 두 네트워크에서 ssh-keyscan 일치신뢰도 높음결과가 갈림—선택적 가로채기 의심

표의 각 행은 단독 결정 근거가 아니라 가중치입니다. 여러 행이 “빨간 쪽”으로 기울면, 임시로 접속을 중단하고 공급자 보안 채널로 연락하는 편이 안전합니다.

검증 매트릭스: 호스트명, 숫자 IP, 리졸러 출력이 일치해야 함

신뢰 자료를 지우기 전에 세 가지를 스냅샷하세요: 셸이 실제로 쓰는 Host 스탠자, macOS에서는 dscacheutil -q host -a name·Linux에서는 dig +short로 본 목적지 IPv4/IPv6, 그리고 바스티온 가이드 점프 설정이 Hostname을 덮어쓰는지 여부입니다. 열 하나라도 어긋나면 잘못된 known_hosts 줄을 지운 뒤 몇 시간을 헛돌 수 있습니다.

Happy Eyeballs 때문에 듀얼 스택이 꼬이면, 한 주소군에서만 가져온 키를 믿기 전에 AAAA / Happy Eyeballs 글과 맞춰 정리하세요. 기업 프록시가 HTTPS 관리 포털만 종료(TLS 가로채기)하고 SSH는 그대로 둘 수도 있습니다—“대시보드는 열린다”와 “PDF에 적힌 지문이 OpenSSH 출력과 같다”는 별개입니다. 벤더 PDF나 서명 JSON을 내려받아 로컬에서 SHA256을 계산하세요. 클립보드 반올림 실수로 잘못 승인하는 사례는 내부 감사에서 대략 200건 중 1건 수준으로 잡힙니다.

추가로, 컨테이너 내부에서 ssh를 돌리는 파이프라인이 있다면, 그 컨테이너의 /etc/ssh/ssh_known_hosts와 개발자 홈의 ~/.ssh/known_hosts가 서로 다른 우선순위를 가질 수 있습니다. 두 파일을 동시에 점검하지 않으면 “한쪽만 고쳤는데도” 경고가 남습니다.

8단계 런북: 규율 있는 신뢰 복구

  1. 자동화 정지: 키가 바뀌는 동안 CI가 SSH를 두드리지 않게 해 속도 제한·노이즈 알림을 줄입니다.
  2. 권위 있는 지문 수집: 공급자 콘솔의 JSON·PEM 기반 지문을 내려받고, 임의 Slack DM은 신뢰하지 않습니다.
  3. 오래된 항목 제거: 써 왔던 모든 별칭에 대해 ssh-keygen -R hostnamessh-keygen -R ip를 실행합니다.
  4. 의도적 탐색: 한 번은 ssh -o VisualHostKey=yes로 접속해 랜덤 아트를 캡처와 비교합니다.
  5. 신중한 재시드: 공항 Wi‑Fi가 아닌 신뢰 네트워크에서만 ssh-keyscan -t ed25519 hostname 출력을 known_hosts에 합류시킵니다.
  6. 점프 설정 갱신: ProxyJump 체인이 미니가 기대하는 논리 호스트명과 같은지 확인합니다.
  7. 팀 공지: 새 지문·타임스탬프·티켓 링크를 내부 상태 채널에 올립니다.
  8. 로그 감시: 48시간간 게이트웨이 로그에서 예기치 않은 국가·대역의 SSH 시도를 grep합니다.
절대 공유 바스티온의 프로덕션 known_hosts를 통째로 지우지 마세요—다른 파이프라인이 무관 벤더 신뢰에 의존합니다.

이 런북을 Confluence나 Notion에 템플릿으로 두고, 리전 이전 RFC마다 링크만 붙이면 온콜이 매번 처음부터 생각하지 않아도 됩니다.

~/.ssh/config에 기대기: UpdateHostKeys·인증서·미래 대비

최신 OpenSSH는 UpdateHostKeys yes로 신뢰할 만한 서버가 회전 키를 게시할 때 매주 손으로 고치지 않게 해 줍니다—HostKeyAlgorithms에서 ssh-ed25519를 앞에 두세요. 대기업은 SSH 사용자 인증서를 깔기도 하는데, 조직이 CA 공개키를 중앙 배포하면 노트북마다 호스트 키를 핀하지 않아도 됩니다.

GUI 클라이언트(Royal TSX, Termius)와 CLI를 섞는 팀은 MDM 금고에서 동일한 known_hosts 조각을보내 모두가 신뢰할 수 없는 호텔망에서 스크린샷으로 지문을 주고받지 않게 하세요.

HSM을 쓰거나 SSHFP DNS 레코드를 게시한다면, DNSSEC 검증이 이미 강제된 환경에서만 VerifyHostKeyDNS yes를 검토하고, 그렇지 않으면 수동 핀과 분기별 로테이션(티켓 ID 첨부)을 유지하세요.

대규모 플릿은 설정 관리 저장소로 known_hosts 파편을 미러링하기도 합니다—방화벽 규칙 변경과 동일하게 리뷰어·롤백 해시·스테이징 SSH 통합 테스트를 의무화하면 회귀가 줄어듭니다.

자주 묻는 질문

VNC는 SSH 호스트 키를 재사용하나요? 아니요—화면 공유는 별도 신뢰 프롬프트가 있습니다. 다만 사람이 비밀번호를 잘못된 모달에 붙여 넣지 않도록 DNS 이름 상관관계는 같이 맞추세요.

JP에서 KR으로 옮길 때마다 키가 바뀌나요? 기본 VM·베어메탈이 바뀔 때만입니다—키는 인스턴스를 따르고 마케팅 리전 배지를 따르지 않습니다.

보안이 매 로테이션을 승인해야 하나요? 규제 스택에서는 예—감사를 위해 변경 기록에 지문을 붙입니다.

VerifyHostKeyDNS는 언제 켜나요? 내부 DNS가 DNSSEC로 서명되고, 클라이언트가 검증 실패 시 연결을 끊도록 설정된 경우에만 권장합니다. 그렇지 않으면 DNS 스푸핑이 곧바로 잘못된 키 수용으로 이어질 수 있습니다.

지문이 다시 현실과 맞춰진 뒤에도 ProxyMac Mac mini인 이유

신뢰 저장소가 정리되면, 임대 Mac mini M4는 개발자 노트북과 같은 macOS 동작을 HK / JP / KR / SG / US에서 유지해 계획 유지보수 중 키 로테이션 때도 놀랄 일이 줄어듭니다. Apple Silicon 사용자 공간은 ssh-keygen과 화면 공유가 책상 위 맥과 같이 움직입니다. 리전별 비용은 요금 페이지에서 비교하고, 원격 워크플로는 도움말 센터로 익히며, PEM 블록 파싱보다 GUI 확인이 낫다면 VNC 안내를 함께 두세요.

증거로 다시 연결하세요

HK / JP / KR / SG / US · Apple Silicon M4