ssm을 통해 프라이빗 EC2 인스턴스에 대한 vscode ssh 원격 설정

5243 단어
요약

AWS 시스템 관리자(SSM)를 사용하면 개방형 22 포트 없이 프라이빗 서브넷의 EC2에 원격으로 vscode ssh를 설정할 수 있습니다. GitHub ,
  • SSM을 통해 프라이빗 EC2에 대한 연결 설정
  • proxyCommand를 사용하여 EC2에 대한 vscode ssh 원격 설정
  • CDK 스택으로 인프라 생성

  • 참조
  • vscode cloud9 setup
  • SSM VPC endpoint
  • aws ssm start-session

  • 건축물





    CDK 스택


  • S3 VPC 종단점이 있는 VPC 생성

  •     const vpc = new aws_ec2.Vpc(
          this,
          'VpcWithS3Endpoint',
          {
            gatewayEndpoints: {
              S3: {
                service: aws_ec2.GatewayVpcEndpointAwsService.S3
              }
            }
          }
        )
    


  • 시스템 관리자 VPC 인터페이스 엔드포인트 추가

  •     vpc.addInterfaceEndpoint(
          'VpcIterfaceEndpointSSM',
          {
            service: aws_ec2.InterfaceVpcEndpointAwsService.SSM
          }
        )
    


  • EC2에 대한 IAM 역할 생성

  •     const role = new aws_iam.Role(
          this,
          'RoleForEc2ToAccessS3',
          {
            roleName: 'RoleForEc2ToAccessS3',
            assumedBy: new aws_iam.ServicePrincipal('ec2.amazonaws.com'),
          }
        )
    


  • SSM과 통신하기 위한 EC2의 역할

  •     role.addManagedPolicy(
          aws_iam.ManagedPolicy.fromManagedPolicyArn(
            this,
            'PolicySSMMangerAccessS3',
            'arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore'
          )
        )
    


  • EC2가 S3에 액세스하기 위한 정책

  •     role.attachInlinePolicy(
          new aws_iam.Policy(
            this,
            'PolicyForEc2AccessS3',
            {
              policyName: 'PolicyForEc2AccessS3',
              statements: [
                new aws_iam.PolicyStatement(
                  {
                    actions: ['s3:*'],
                    resources: ['*']
                  }
                ),
              ]
            }
          )
        )
    
    


  • 프라이빗 서브넷에서 EC2 시작

  •     const ec2 = new aws_ec2.Instance(
          this,
          'Ec2ConnectVpcEndpointS3',
          {
            role: role,
            keyName: 'hai_ec2_t4g_large',
            vpc: vpc,
            instanceName: 'Ec2ConnectVpcEndpointS3',
            instanceType: aws_ec2.InstanceType.of(aws_ec2.InstanceClass.T2, aws_ec2.InstanceSize.SMALL),
            machineImage: aws_ec2.MachineImage.latestAmazonLinux(),
            securityGroup: sg,
            vpcSubnets: {
              subnetType: aws_ec2.SubnetType.PRIVATE
            }
          }
        )
    


    SSM을 통해 프라이빗 EC2에 대한 연결 설정


  • follow this to 로컬 시스템용 ssm 플러그인 설치
  • 로컬 시스템에서 ssm 세션 시작

  • aws ssm start-session --target "EC2-INSTANCE-ID"
    


    EC2에 대한 vscode ssh 원격 설정


  • follow this to vscode용 nstall ssh 원격 확장
  • 로컬 시스템에서 SSH 키 쌍 생성

  • ssh-keygen -b 4096 -C 'VS Code Remote SSH user' -t rsa
    
    


  • ~/.ssh/config 파일 구성

  • Host ssm-private-ec2
      IdentityFile ~/.ssh/id_rsa
      HostName i-026bb5f5caaf16aa1
      User ec2-user
      ProxyCommand sh -c "~/.ssh/ssm-private-ec2-proxy.sh %h %p"
    


  • ssm-private-ec2-proxy.sh 파일 생성

  • #!/bin/bash
    
    AWS_PROFILE=''
    AWS_REGION=''
    MAX_ITERATION=5
    SLEEP_DURATION=5
    
    # Arguments passed from SSH client
    HOST=$1
    PORT=$2
    
    echo $HOST
    
    # Start ssm session
    aws ssm start-session --target $HOST \
      --document-name AWS-StartSSHSession \
      --parameters portNumber=${PORT} \
      --profile ${AWS_PROFILE} \
      --region ${AWS_REGION}
    


    vscode는 내부적으로 SSM 세션을 생성하는 ProxyCommand 스크립트를 통해 EC2에 대한 ssh 연결을 생성합니다. 이 방법입니다 vscode ssh remote with cloud9 works

    좋은 웹페이지 즐겨찾기