본문으로 건너뛰기

[EC2] Private EC2 SSM 접속 가이드

Prerequisite​

  • AWS 계정 접근 권한: IAM Role 생성 및 EC2 설정을 변경할 수 있는 권한이 필요합니다.

  • VPC 네트워크 환경: 아래와 같이 대상 Private Subnet이 외부 통신이 가능해야 합니다.

    • SSM 전용 VPC 엔드포인트 생성

    • Subnet의 트래픽이 NAT Gateway를 통해 외부로 아웃바운드 허용

알아두기​

SSM(AWS Systems Manager) Session Manager 는 22번 포트를 열지 않고 EC2 에 접속하는 방법입니다. 프라이빗 서브넷의 인스턴스에도 들어갈 수 있습니다.

  • SSM Agent: 인스턴스 안에서 도는 에이전트가 AWS 쪽으로 먼저 연결을 맺습니다. 그래서 인바운드 규칙을 열지 않아도 됩니다. 최신 Amazon Linux·Ubuntu AMI 에는 기본 설치돼 있습니다.
  • IAM 역할: 인스턴스에 SSM 권한이 담긴 역할을 붙여야 목록에 나타납니다.
  • 접속 경로: 인스턴스가 SSM 엔드포인트에 닿을 수 있어야 합니다. 인터넷이 없는 서브넷이면 VPC 엔드포인트가 필요합니다.

Process​

1. IAM 역할(Role) 생성 및 설정​

EC2 인스턴스가 SSM 서비스와 통신할 수 있는 권한을 부여하는 단계입니다.

  1. AWS Console에서 IAM 서비스로 이동합니다.  

  2. 역할(Roles) 메뉴를 클릭합니다.  

  3. 역할 생성(Create role) 버튼을 클릭합니다.  

  4. 신뢰할 수 있는 엔티티 유형에서 AWS 서비스를 선택하고, 하단 사용 사례에서 EC2를 선택합니다.  

  5. 권한 정책 검색창에 AmazonSSMManagedInstanceCore를 입력하고 해당 정책을 체크합니다.

    • (Notice: 이 정책은 SSM 기능을 사용하기 위한 필수 최소 권한입니다.)  
  6. 역할 이름을 입력하고(예: EC2-SSM-Role) 생성을 완료합니다.  

2. EC2 인스턴스 구성​

대상 EC2 인스턴스에 위에서 생성한 권한을 연결합니다.

  • IAM 역할 연결

    1. EC2 콘솔에서 대상 인스턴스를 선택합니다.  

    2. 인스턴스를 선택해 인스턴스 목록을 확인합니다.  

    3. 해당 인스턴스를 선택하고 **작업(Actions) > 보안(Security) > IAM 역할 수정(Modify IAM role)**을 클릭합니다.  

    4. 앞서 생성한 IAM Role (예 : EC2-SSM-Role )을 선택하고 저장합니다.

3. 로컬 환경 설정 (필수 설치)​

로컬 터미널에서 EC2에 접속하기 위해 필요한 도구들을 설치합니다.

  1. AWS CLI 설치

    • macOS: 터미널에서 brew install awscli 명령어를 실행합니다.

    • Windows: AWS 공식 사이트에서 [AWSCLIV2.msi] 설치 파일을 다운로드하여 실행합니다.

      • 여기를 클릭하시면 공식 설치 사이트로 이동됩니다.
    • 설치 후 터미널에 aws --version을 입력하여 버전 정보를 확인합니다.

  2. Session Manager Plugin 설치

    • (중요) AWS CLI만으로는 접속이 불가능하며, 반드시 이 플러그인이 설치되어야 합니다.

    • macOS: 서명된 설치 관리자를 사용하여 Session Manager 플러그인을 설치하려면(macOS) 터미널에서

      • Apple 실리콘 탑재 Mac

        curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac_arm64/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
      • Intel 칩이 탑재 된 Mac

        curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
    • Windows: 다음 URL을 PowerShell에 입력하여 설치 관리자를 다운로드합니다.

      https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe
    • 설치 후 터미널/Pow에 session-manager-plugin을 입력하여 설치 성공 메시지를 확인합니다.

4. AWS Access Key 발급​

CLI 사용을 위해 IAM 사용자 자격 증명(Access Key)을 생성합니다.

  1. AWS Console 우측 상단의 계정 이름을 클릭하고 보안 **자격 증명(Security credentials)**을 선택합니다.  

    • (또는 IAM 대시보드 -> 사용자 -> 본인 ID 클릭 -> 보안 자격 증명 탭 이동)
  2. 액세스 키(Access keys) 섹션에서 액세스 키 만들기(Create access key) 버튼을 클릭합니다.  

  3. 사용 사례로 **CLI(Command Line Interface)**를 선택하고, 하단의 확인 체크박스를 선택 후 다음을 누릅니다.  

  4. 설명 태그는 생략 가능하며 액세스 키 만들기를 클릭합니다.  

  5. (중요) .csv 파일 다운로드를 클릭하여 키 파일을 안전한 곳에 저장합니다.

    • Access Key ID: 공개되어도 식별 가능한 ID입니다.

    • Secret Access Key: 비밀번호와 같습니다. 이 화면을 벗어나면 다시는 확인할 수 없으므로 반드시 지금 복사하거나 다운로드해야 합니다.

5. AWS CLI 자격 증명 설정​

로컬 터미널이 AWS 리소스에 접근할 수 있도록 인증 정보를 입력합니다.

  1. 터미널에서 다음 명령어를 실행합니다.

    aws configure
  2. 발급받은 액세스 키 정보를 차례대로 입력합니다.

    • AWS Access Key ID: (액세스 키 입력)

    • AWS Secret Access Key: (시크릿 키 입력)

    • Default region name: ap-northeast-2 (서울 리전인 경우)

    • Default output format: json

5. 접속 테스트 (Start Session)​

설정이 완료되었으므로 터미널을 통해 Private EC2에 접속합니다.

  1. AWS 콘솔에서 접속하려는 인스턴스 ID (예: i-0xxxx)를 확인합니다.

  2. 터미널에서 아래 명령어를 입력합니다.

    aws ssm start-session --target <인스턴스-ID>
    • 예시: aws ssm start-session --target i-0123456789abcdef0
  3. sh-4.2$ 또는 bash-4.2$와 같은 쉘 프롬프트가 출력되면 접속 성공입니다!

Trouble Shooting​

접속 명령어 입력 시 에러가 발생하거나 반응이 없는 경우 확인 사항입니다.

  • An error occurred (TargetNotConnected)...

    • EC2 인스턴스가 실행 중(Running) 상태인지 확인합니다.

    • IAM 역할(AmazonSSMManagedInstanceCore) 연결 후 약 5~10분이 지났는지 확인합니다. (Agent 초기화 시간 필요)

  • 반응 없이 멈춰 있는 경우

    • Private Subnet의 라우팅 테이블에 NAT Gateway가 연결되어 있는지 확인합니다.

또 다른 질문이 있으십니까? 문의 등록