클라우드 환경에서 개발 및 운영을 하다 보면 예상치 못한 네트워크 문제를 자주 마주하게 된다. 최근 Azure에 VM을 배포한 후 SSH로 접속을 시도했는데, telnet은 정상적으로 연결되지만 SSH는 kex_exchange_identification 오류가 발생하며 실패하는 문제가 있었다.


1. 문제 상황 분석

Azure VM에 SSH로 접속하려고 했으나 다음과 같은 문제가 발생했다.

  • Telnet(포트 22, 2222)은 정상 작동하지만, SSH 접속은 실패
  • SSH 접속 시 kex_exchange_identification: Connection closed by remote host 오류 발생
  • SSH 키 관련 오류 메시지가 출력됨

2. 원인 분석 및 해결 과정

(1) SSH 포트 변경 확인

먼저, Azure VM의 SSH 설정을 확인했다. 기본적으로 SSH는 포트 22를 사용하지만, 보안 강화를 위해 관리자가 2222로 변경했을 가능성이 있었다.
Azure에서 SSH 포트를 변경했는지 확인하려면 다음 명령어를 실행하면 된다.

 
sudo netstat -tuln | grep ssh

🔹 결과: 2222 포트에서 SSH가 실행 중이었다.

해결 방법:
SSH 접속 시 -p 옵션을 추가하여 올바른 포트로 연결해야 한다.

 
ssh -i ~/.ssh/mykey.pem -p 2222 사용자명@공용IP

(2) SSH 키 파일 문제 해결

Azure VM은 기본적으로 비밀번호 인증을 비활성화하고 SSH 키 인증 방식을 사용한다. 하지만, SSH 키를 생성하지 않았거나, 개인 키 파일이 로컬에 없을 경우 접근이 불가능하다.

Azure VM을 만들 때 생성된 SSH 키를 찾을 수 없다면, 다음 방법으로 새로운 SSH 키를 생성해야 한다.

🔹 로컬에서 새로운 SSH 키 생성

 
ssh-keygen -t rsa -b 2048 -f ~/.ssh/new_azure_key

🔹 Azure VM에 새로운 SSH 공개 키 등록

  1. Azure Portal → VM → Run CommandRunShellScript 실행
  2. 명령어 입력
    echo "새 SSH 공개 키" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys

이제 새로운 키를 사용해 SSH 접속을 시도할 수 있다.

ssh -i ~/.ssh/new_azure_key -p 2222 사용자명@공용IP

(3) Azure NSG 및 방화벽 설정 확인

Azure VM은 기본적으로 **네트워크 보안 그룹(NSG)**을 통해 인바운드 및 아웃바운드 트래픽을 제어한다. telnet은 정상적으로 작동하지만 SSH 접속이 되지 않는다면, NSG에서 2222 포트가 차단되었을 가능성이 있다.

🔹 NSG 규칙 확인 및 수정 방법

  1. Azure Portal → VM → 네트워킹 → 인바운드 규칙 확인
  2. 2222 포트가 허용(Allow) 으로 설정되어 있는지 확인
  3. 다음과 같은 규칙을 추가
    • 소스: Any
    • 대상 포트: 2222
    • 프로토콜: TCP
    • 작업: Allow

🔹 리눅스 방화벽(UFW) 설정 확인

sudo ufw status sudo ufw allow 2222/tcp

3. 해결 및 정리

이 문제는 SSH 포트 변경, SSH 키 파일 문제, NSG 및 방화벽 설정이 원인이었다.

🔹 정리하면 다음과 같은 방식으로 해결 가능하다.

  1. SSH 포트 확인: sudo netstat -tuln | grep ssh
  2. 올바른 SSH 키 사용하여 접속: ssh -i ~/.ssh/mykey.pem -p 2222 사용자명@공용IP
  3. SSH 키가 없다면 새로 생성하여 등록
  4. Azure NSG 및 리눅스 방화벽에서 2222 포트가 허용되었는지 확인

실제 클라우드 운영 환경에서는 이런 문제가 자주 발생할 수 있다. 단순한 연결 문제로 보일 수도 있지만, 보안 설정과 운영 정책에 따라 원인이 달라질 수 있으므로 하나씩 확인하며 해결하는 것이 중요하다.

+ Recent posts