Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

SSH '일치하는 키 교환 방법을 찾을 수 없음' 오류 해결 방법 완벽 가이드

SSH '일치하는 키 교환 방법을 찾을 수 없음' 오류란?

원격 서버에 SSH로 접속하려고 할 때 'no matching key exchange method found'(일치하는 키 교환 방법을 찾을 수 없음)라는 오류 메시지가 표시되면서 어떤 암호화 알고리즘을 사용해야 하는지 제안을 받는 경우가 있습니다. 이 오류가 발생하면 원격 서버에 전혀 접속할 수 없게 되는데, 상당히 답답한 상황이지만 그만큼 흔한 문제라서 유닉스 사용자들 사이에서도 자주 언급되며 검증된 해결 방법이 널리 공유되고 있습니다.

아래에서 소개하는 해결 방법은 SSH가 작동하는 거의 모든 환경에서 테스트된 것들이지만, 이 문제는 대부분 유닉스 및 리눅스 시스템에서 발생합니다. 윈도우나 기타 특수한 환경에서 SSH를 실행하는 경우에도 동일한 절차로 해결할 수 있으며, 다만 옵션 스위치의 명칭이 약간 다를 수 있다는 점만 유의하면 됩니다.

방법 1: 서버 재접속 및 키 재생성

무엇보다 먼저 해당 오류가 실제로 재현되는지 확인해야 합니다. 때로는 이 오류 메시지가 원격 측의 특정 서비스가 현재 실행 중이 아니어서 나타나는 것일 수 있으며, 시간이 지나면서 자연스럽게 해결되기도 합니다. 예를 들어 가상 머신에서 SSH를 실행해 문서용 예시 주소인 example.org로 접속을 시도할 수 있지만, 실제 작업 시에는 반드시 실제 네트워크 주소를 입력해야 합니다.

SSH  일치하는 키 교환 방법을 찾을 수 없음  오류 해결 방법 완벽 가이드

그래도 오류가 계속 발생한다면 명령 프롬프트에서 ssh-keygen -A 명령으로 키를 재생성해 보세요. 이 명령은 SSH 애플리케이션이 원격 서버에 접속할 때 사용하는 캐시를 새로 고쳐 줍니다. 그래도 해결되지 않으면 service ssh restart 명령으로 SSH 서비스를 재시작하고 잠시 기다려 보는 것도 좋습니다.

여전히 문제가 해결되지 않는다면 서버와 클라이언트가 사용할 올바른 프로토콜에 대해 합의하지 못했다는 의미입니다. OpenSSH는 매우 다양한 프로토콜을 지원하지만, 일부 프로토콜은 이미 보안 취약점이 드러나 안전하지 않다고 판단되어 기본적으로 비활성화되어 있습니다. 따라서 서버 측의 모든 SSH 패키지를 최신 버전으로 업데이트해야 하며, 회사 서버라면 반드시 시스템 관리자에게 상황을 알려야 합니다. 직접 운영하는 서버라면 곧바로 업데이트를 진행하세요.

서버 업데이트가 당장 불가능한 상황이고, 취약한 알고리즘을 사용하는 위험성을 충분히 인지하고 있다면 클라이언트 측에서 이 오류를 우회하는 방법도 있습니다.

방법 2: OpenSSH에서 레거시 옵션 활성화하기

오류 메시지에서 'Their offer:'라는 문구 뒤에 표시되는 내용을 확인하면 원격 서버가 선호하는 알고리즘이 무엇인지 알 수 있습니다. 대부분의 시스템은 이미 구식 기술인 diffie-hellman-group1-sha1을 비활성화한 OpenSSH 7을 사용하고 있지만, 상대 서버가 아직 OpenSSH 6 등 구버전을 사용 중이라면 sha1 기반 알고리즘을 사용하라는 안내를 받게 됩니다.

클라이언트 측에서 이 문제를 해결하려면 원격 서버의 실제 호스트명 또는 IP 주소를 넣어 다음 명령을 실행합니다.

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 testhost@example.org

이 명령으로 문제가 해결된다면 상대 서버가 구형 sha1 기반 프로토콜로의 접속을 요구하고 있었던 것입니다. 이 구형 sha1 방식이 비활성화된 데에는 분명한 보안상의 이유가 있지만, nano 또는 vim 편집기로 ~/.ssh/config 파일을 열어 다음 줄을 추가하면 좀 더 영구적으로 우회할 수 있습니다.

Host example.org
KexAlgorithms +diffie-hellman-group1-sha1

이때 더하기(+) 기호가 반드시 포함되어야 한다는 점에 유의하세요. 더하기 기호는 SSH가 더 안전한 기본 설정을 대체하지 않고 그대로 유지한 채 새 알고리즘을 추가하도록 지시하는 의미입니다. 이렇게 설정해 두면 나중에 서버가 패키지를 업데이트한 후에는 대부분의 경우 자동으로 더 안전한 프로토콜이 사용됩니다.

앞서 받은 오류 메시지가 sha1이 아닌 ssh-dss 프로토콜을 언급했다면, 대신 다음 명령에 실제 호스트명을 붙여 실행해 보세요.

ssh -oHostKeyAlgorithms=+ssh-dss [호스트명]

이 명령이 정상적으로 작동한다면 ~/.ssh/config 파일을 다시 편집해야 합니다. Host 줄 다음에 탭을 하나 추가하고 아래 내용을 입력합니다.

HostKeyAlgorithms +ssh-dss

마무리: 보안을 위한 권장 사항

sha1 방식과 마찬가지로 ssh-dss 키 역시 심각한 보안 문제로 인해 공식적으로 폐기(deprecated)된 기술이라는 점을 잊지 마세요. 이 옵션을 강제로 활성화하면 연결에 취약점이 생길 수 있으므로, 어디까지나 임시적인 처방으로만 고려해야 합니다. 근본적인 해결을 위해서는 가능한 한 빨리 서버 측 SSH 패키지를 최신 버전으로 업데이트하고, 클라이언트와 서버가 현대적인 키 교환 알고리즘을 함께 지원하도록 맞추는 것이 무엇보다 중요합니다.