문제 해결

SSH "no matching host key type found": 원인과 해결법

최신 OpenSSH는 ssh-rsa(SHA-1)를 기본적으로 비활성화하여 레거시 서버가 협상에 실패합니다. HostKeyAlgorithms=+ssh-rsa로 호스트별로 뚫고, 키 교환/암호 오류에도 같은 해결법을 ── 그리고 진짜 해결: 서버 업그레이드.

CC Chen Chen· 창업자·2026년 6월 24일·6분 분량

"no matching host key type found"의 의미

SSH 클라이언트와 서버가 암호화 알고리즘에 합의하지 못해 연결이 시작되지 않습니다. 2026년에 흔한 이유는 이렇습니다: 최신 클라이언트가, 오래된 서버가 여전히 의존하는 낡고 취약한 알고리즘을 비활성화했기 때문입니다. OpenSSH 8.8 이상은 ssh-rsa(SHA-1) 서명을 기본적으로 끄며, 레거시 서버·라우터·NAS·스위치는 그보다 새로운 것을 제시하지 못하는 경우가 많습니다. 빠르게 뚫는 것은 플래그 하나면 되고, 진짜 해결은 서버를 업그레이드하는 것입니다.

이 오류의 세 가지 변형

오류합의하지 못한 것
no matching host key type found. Their offer: ssh-rsa호스트 키 서명 알고리즘
no matching key exchange method found. Their offer: diffie-hellman-group1-sha1키 교환(KEX)
no matching cipher found암호화 알고리즘

세 가지 모두 같은 이야기입니다 ── 서버가 클라이언트에서 안전하지 않다는 이유로 퇴역시킨 알고리즘만 제시하는 것이죠. Their offer: 부분이 서버가 어떤 더 이상 권장되지 않는 알고리즘에 갇혀 있는지 정확히 알려줍니다.

빠르게 뚫기(연결별)

그 특정한 오래된 알고리즘을 이 호스트에 한해 다시 활성화합니다. 가장 흔한 ssh-rsa 경우:

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa user@host

오래된 키 교환이나 암호의 경우, 이에 해당합니다:

ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 user@host
ssh -o Ciphers=+aes128-cbc user@host

다른 곳의 보안을 약화시키지 않으면서 한 호스트에만 영구적으로 적용하려면 ~/.ssh/config에 넣으세요:

Host old-nas
    HostName 192.168.1.10
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

진짜 해결: 서버를 업그레이드하기

+ssh-rsa 플래그는 임시방편이지 해결책이 아닙니다 ── 그 알고리즘들은 깨졌기 때문에 비활성화된 것입니다. 지속 가능한 해결은 서버가 최신 알고리즘을 제시하도록 만드는 것입니다:

  • 서버의 OpenSSH를 업데이트하세요(최신 OpenSSH는 Ed25519와 rsa-sha2-256/512를 자동으로 제시합니다).
  • 호스트 키가 없다면 최신 호스트 키를 생성하세요: sudo ssh-keygen -A가 Ed25519를 포함한 호스트 키를 재생성합니다.
  • 업데이트할 수 없는 장비(오래된 라우터·NAS·스위치)에는 호스트별 ~/.ssh/config 예외가 현실적인 타협입니다 ── 약한 알고리즘을 그 한 대에만 한정하세요.

휴대폰에서

최신 모바일 클라이언트는 기본적으로 최신 알고리즘을 협상합니다 ── 보안에는 좋지만, 레거시 장비에 대해서는 같은 벽에 부딪힌다는 뜻입니다. 두 가지가 도움이 됩니다: 지원하는 어떤 서버에서든 ssh-rsa 서명 문제를 완전히 우회하는 Ed25519 키를 우선 사용하세요(TermAI가 생성해 줍니다). 그리고 정말 오래된 장비에는, 연결별로 알고리즘 옵션을 설정할 수 있는 클라이언트가 ~/.ssh/config와 같은 탈출구를 제공합니다.

휴대폰에서 최신 알고리즘으로 연결된 SSH 세션
최신 클라이언트는 강력한 알고리즘(Ed25519, rsa-sha2)을 기본으로 합니다 ── 보안에는 훌륭하지만, 레거시 서버는 연결하기 위해 범위를 한정한 호환 옵션이 필요할 수 있습니다.

자주 묻는 질문

"no matching host key type found"는 어떻게 고치나요?
ssh 명령에 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa를 추가하거나, ~/.ssh/config의 Host 블록 안에 같은 줄을 넣으세요. 장기적으로는 서버의 OpenSSH를 업데이트하세요.

클라이언트를 업데이트한 뒤에 왜 망가졌나요?
OpenSSH 8.8 이상이 낡은 ssh-rsa(SHA-1) 알고리즘을 기본적으로 비활성화했기 때문입니다. 그것만 제시하는 서버는 다시 활성화하거나 업그레이드할 때까지 협상에 실패합니다.

ssh-rsa를 다시 활성화해도 안전한가요?
최신 알고리즘보다 약하므로, 전역으로 활성화하지 말고 그것이 필요한 특정 레거시 호스트에만 한정해야 합니다. 올바른 해결은 서버를 업그레이드하는 것입니다.

host key verification failed와는 어떻게 다른가요?
이 오류는 어떤 알고리즘을 쓸 수 있는지(협상)에 관한 것입니다. Host key verification failed는 서버의 신원 키가 바뀐 것에 관한 것입니다.

빠른 요약

  • 의미: 클라이언트와 서버에 받아들일 수 있는 공통 알고리즘이 없음 ── 보통 최신 클라이언트 대 레거시 서버
  • 원인: OpenSSH 8.8 이상이 ssh-rsa(SHA-1) 등 약한 알고리즘을 기본적으로 비활성화함
  • 빠르게 뚫기: -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa(~/.ssh/config에서 호스트별로 한정)
  • 진짜 해결: 서버의 OpenSSH 업데이트; ssh-keygen -A로 호스트 키 재생성
  • 피하기: 지원하는 서버에서는 Ed25519 키 사용(TermAI가 생성)
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog