AWS Session Manager로 VSC Remote-SSH 연동하기

AWS Session Manager Soltuions | AWS Session Manager로 Private Subnet안의 EC2로 VSC Remote-SSH 연동하기
이민석's avatar
Jun 27, 2024
AWS Session Manager로 VSC Remote-SSH 연동하기

이 문서는 Production Level에서 AWS Session Manager를 사용하는 사례에 관련된 문서입니다.

개요

  1. AWS Session Manager의 단점 (VSC Remote-SSH)

  2. RSA Public/Private Key System 구축하기

AWS Session Manager의 단점 (VSC Remote-SSH)

앞서 임의 상황에서 VPC 3-Tier Architecture와 Bastion Host가 연 228~457만₩/1y를 지불할 수 있고 이를 AWS Session Manager로 절감하는 방법을 배웠습니다.

하지만 해당 방법은 EC2 Instance에 SSH가 아닌 SSM을 사용합니다.
즉, VSC Remote-SSH를 사용해서 해당 서버에 접속하는 것이 불가능해집니다.

즉 VSC Extensions 중 하나인 VSC Remote-SSH를 사용할 수 없게 된다는 말입니다.

  1. VSC Remote-SSH

  2. VSC Remote-SSH 원격 탐색기
    등록된 폴더들을 클릭하면 자동으로 SSH 연결이 완료됩니다.

VPC Interface Endpoint 생성하기

Private Resource에 접근하기 위해서 VPC Interface Endpoint를 사용할 수 있스빈다. 이 서비스는 개별 AZ에 대해서 0.01$의 사용료를 지불해야 합니다.

SLO(Service Level Object, 서비스 목표 수준)에 따라서
1~3 AZs는 약 12~36만₩/1y 정도의 비용이 지불될 것입니다.

이 비용은 역시 서비스의 수 & 운영망의 수와 비례하여 증가한다.
즉, 서비스 3개와 망 3개를 운영하는 순간 한달에 109~328만₩/1y 정도의 비용이 지불됩니다. 만약 팀이 세분화 되어 있다면 세분화된 갯수만큼 비례증가할 것입니다.

기존에 Bastion Host를 사용하는 것에 비해서 약 119~129만₩/1y 정도의 비용이 절감될 것입니다.

RSA Public/Private Key System 구축하기

비대칭 키 알고리즘인 RSA를 사용하여, EC2 Instance와 Local-PC를 연결할 수 있습니다.

  1. RSA Key 생성하기

    cat /dev/zero | ssh-keygen -q -N "" > /dev/null
  2. Ec2 Instance에 접속키 등록하기

    public_key=$(cat ~/.ssh/id_rsa.pub)
    
    public_key_register=$(cat<<EOF
    echo $public_key > /home/ubuntu.ssh/authorized_keys
    EOF
    )
    
    aws ssm send-command                         \
      --document-name "AWS-RunShellScript"        \
      --parameters commands="$public_key_register" \
      --instance-ids id-123451234512345             \
      --region ap-northeast-2
  3. VSC Remote-SSH Config 파일 수정하기

    Host i-123451234512345
      IdentityFile ~\.ssh\id_rsa
      User ubuntu

참고 자료

  1. Medium | How To Do Remote Development With VS Code Using AWS SSM

  2. aws/aws-toolkit-vscode (GitHub) | VSCode Remote to EC2 instance (via SSH over SSM) #941

  3. AWS re:Post | Systems Manager를 사용하여 인터넷에 액세스하지 않고도 프라이빗 EC2 인스턴스를 관리할 수 있도록 VPC 엔드포인트를 생성하려면 어떻게 해야 하나요?

  4. AWS (Docs) | Access an AWS service using an interface VPC endpoint

  5. AWS (Pricing) | Price of Interface Endpoint

Share article

Unchaptered