Question

인스턴스에 SSH 접속이 되지 않아요.


Answer

SSH 접속 에러시 확인해봐야할 몇가지 요소를 안내드리겠습니다. 


1. 인스턴스 상태 확인

  • SSH 접속 불가 문제를 해결하는 첫 번째 단계는 인스턴스의 상태를 확인하는 것입니다. 다음 사항들을 점검해 보세요:

    • 인스턴스 상태 확인: AWS Management Console에서 해당 인스턴스의 상태가 "running"인지 확인합니다. 만약 "stopped" 또는 "terminated" 상태라면, SSH 접속은 불가능합니다.
    • 상태 검사 (Status Checks): AWS 콘솔의 'Status Checks' 섹션에서 두 가지 상태 검사 항목이 모두 통과되었는지 확인합니다. 둘 중 하나라도 실패할 경우, 해당 인스턴스에 심각한 문제가 발생했을 가능성이 있습니다.
  • 조치: 상태 체크가 실패한 경우, 시스템 로그를 확인하거나 지원팀에 문의하여 문제를 진단하고 해결합니다.

  • 일반적으로는 stop / start로 해결이 가능 합니다.

  • 인스턴스 상태 실패의 경우는, OS 레벨의 상태를 확인 해야 합니다.


2. SSH 접속 시 인스턴스 사용자 이름 확인

  • SSH 접속 시 사용하는 사용자 이름이 인스턴스의 OS에 적합한지 확인해야 합니다. OS별로 기본 사용자 이름이 다르기 때문에, 잘못된 사용자 이름으로 접속을 시도하면 인증에 실패하게 됩니다.


  • 인스턴스 OS 확인 방법 (인스턴스 선택 - 하단 세부정보 탭 - 인스턴스 세부정보)


  • 해당 인스턴스에 적합한 사용자 이름으로 접속 시도하였는지 확인합니다.

    • Amazon Linux 2/AMI: ec2-user
    • CentOS AMI: centos 또는 ec2-user
    • Debian AMI: admin
    • Fedora AMI: fedora 또는 ec2-user
    • RHEL AMI: ec2-user 또는 root
    • SUSE AMI: ec2-user 또는 root
    • Ubuntu AMI: ubuntu
    • Oracle AMI: ec2-user
    • Bitnami AMI: bitnami


3. 보안 그룹 규칙이 SSH 트래픽을 허용하는지 확인

  • 보안 그룹은 인스턴스에 대한 네트워크 트래픽을 제어하는 중요한 구성 요소입니다. 보안 그룹 설정이 올바르지 않으면 SSH 접속이 차단될 수 있습니다.

    • 인바운드 규칙 확인: 인스턴스에 연결된 보안 그룹에서 포트 22(SSH)에 대한 인바운드 규칙이 올바르게 설정되어 있는지 확인합니다. 특히, 소스 IP가 허용된 범위 내에 있는지 확인이 필요합니다.
    • IP 주소 확인: 현재 사용 중인 IP 주소가 보안 그룹에서 SSH 접속을 허용한 소스 IP 범위와 일치하는지 확인합니다. 만약 IP 주소가 변경된 경우, 보안 그룹 규칙을 업데이트해야 합니다.
  • 조치: 보안 그룹의 인바운드 규칙을 검토하여 포트 22가 열려 있고, 적절한 IP 주소가 허용된 상태인지 확인합니다.


4. 키페어 확인

  • SSH 접속 에러 화면 (잘못된 프라이빗키를 적용한 경우) 


  • SSH 접속 시 사용하는 프라이빗 키가 올바른지 확인하는 것은 매우 중요합니다. 잘못된 키를 사용할 경우, 인증에 실패하게 됩니다.

    • 프라이빗 키 일치 여부: 인스턴스 생성 시 지정한 키페어와 현재 사용하는 프라이빗 키가 일치하는지 확인합니다.
    • 프라이빗 키 파일 권한 설정: 프라이빗 키 파일의 권한이 적절히 설정되어 있는지 확인합니다. 예를 들어, UNIX/Linux 시스템에서는 chmod 400 your-key.pem 명령어를 사용하여 권한을 설정할 수 있습니다.
  • 조치: 올바른 프라이빗 키를 사용하여 접속을 시도하거나, 필요시 새로운 키페어를 생성하여 인스턴스에 적용합니다.

5. 네트워크 ACL 및 라우팅 테이블 확인

네트워크 ACL 또는 라우팅 테이블 설정이 SSH 접속에 영향을 미칠 수 있습니다. 이 설정들은 서브넷 수준에서 트래픽을 제어합니다.

  • 네트워크 ACL 확인: 네트워크 ACL에서 인바운드와 아웃바운드 규칙이 SSH 트래픽을 허용하는지 확인합니다. 네트워크 ACL은 보안 그룹과는 별도로 작동하며, 보다 세밀한 트래픽 제어를 제공합니다.
  • 라우팅 테이블 확인: 인스턴스가 속한 서브넷의 라우팅 테이블이 올바르게 설정되어 있는지 확인합니다. 특히, 인터넷 게이트웨이 또는 NAT 게이트웨이를 통해 외부와의 통신이 가능해야 합니다.

조치: 네트워크 ACL 및 라우팅 테이블 설정이 올바른지 확인하고, 필요시 설정을 수정하여 SSH 접속을 허용합니다.


6. 인스턴스 내부 방화벽 설정 확인

인스턴스 내부의 방화벽 설정이 SSH 트래픽을 차단할 수 있습니다. 특히 iptables와 같은 방화벽 서비스를 사용하는 경우, 설정을 점검해야 합니다.

  • iptables 설정 확인: 인스턴스에서 iptables 또는 다른 방화벽 서비스가 포트 22(SSH)를 허용하도록 설정되어 있는지 확인합니다.

조치: 방화벽 설정이 SSH 접속을 허용하도록 수정하고, 필요한 경우 방화벽을 재시작하여 설정을 적용합니다.


7. 기타 고려 사항

  • DNS 문제: 도메인을 통해 SSH 접속을 시도하는 경우, DNS 문제로 인해 접속이 불가능할 수 있습니다. IP 주소를 직접 사용하여 접속을 시도해 보세요.
  • 네트워크 연결 상태: 사용자의 네트워크 연결 상태가 불안정한 경우에도 SSH 접속에 문제가 발생할 수 있습니다. 가능하다면 다른 네트워크 환경에서 접속을 시도해 보세요.

결론

SSH 접속 문제는 다양한 원인으로 발생할 수 있으며, 문제를 해결하기 위해서는 체계적인 접근이 필요합니다. 본 가이드에서 제공한 단계별 해결책을 따르시면 대부분의 SSH 접속 문제를 해결할 수 있을 것입니다. 만약 위의 방법으로도 문제가 해결되지 않는다면, AWS 지원팀에 문의하여 추가적인 도움을 받으시기 바랍니다.