EC2 Instance Connect 설정
EC2 Instance Connect를 사용하여 인스턴스에 연결하려면 Instance Connect를 사용하여 지원할 모든 인스턴스를 구성해야 하며(각 인스턴스에 대한 일회성 요구 사항), Instance Connect를 사용할 모든 IAM 보안 주체에게 권한을 부여해야 합니다. 다음 설정 작업을 완료한 후 EC2 Instance Connect을(를) 사용하여 인스턴스에 연결할 수 있습니다.
EC2 Instance Connect를 설정하기 위한 태스크
EC2 Instance Connect 설정에 대한 자세한 내용은 Amazon EC2 Instance Connect를 사용하여 Bastion 호스트의 보안 유지
제한 사항
-
다음과 같은 지원되는 Linux 배포판에 EC2 Instance Connect를 설치할 수 있습니다.
Amazon Linux 2(모든 버전)
Ubuntu 16.04 이상
-
SSH 인증을 위한
AuthorizedKeysCommand
및AuthorizedKeysCommandUser
설정을 구성했다면 EC2 Instance Connect 설치 시 이들 항목이 업데이트가 되지 않습니다. 따라서 Instance Connect를 사용할 수 없습니다.
EC2 Instance Connect 설치를 위한 사전 조건
-
SSH를 사용하여 인스턴스에 연결하기 위한 일반 사전 조건을 확인합니다.
자세한 내용은 인스턴스에 연결하기 위한 일반 사전 조건 섹션을 참조하세요.
-
로컬 컴퓨터에 SSH 클라이언트를 설치합니다.
로컬 컴퓨터에는 대개 기본적으로 SSH 클라이언트가 설치되어 있습니다. 명령줄에 ssh를 입력하여 SSH 클라이언트가 있는지 확인할 수 있습니다. 로컬 컴퓨터가 명령을 인식하지 않는 경우 SSH 클라이언트를 설치할 수 있습니다. Linux 또는 macOS에 SSH 클라이언트를 설치하는 방법은 http://www.openssh.com
을 참조하십시오. Windows 10에 SSH 클라이언트를 설치하는 방법은 OpenSSH in Windows 를 참조하십시오. -
로컬 컴퓨터에 AWS CLI를 설치합니다.
IAM 권한을 구성하려면 AWS CLI를 사용해야 합니다. AWS CLI 설치에 대한 자세한 내용은 AWS Command Line Interface 사용 설명서에서 AWS CLI 설치를 참조하세요.
-
[Ubuntu] 인스턴스에 AWS CLI를 설치합니다.
Ubuntu 인스턴스에 EC2 Instance Connect를 설치하려면 해당 인스턴스에서 AWS CLI를 사용해야 합니다. AWS CLI 설치에 대한 자세한 내용은 AWS Command Line Interface 사용 설명서에서 AWS CLI 설치를 참조하세요.
작업 1: 인스턴스에 대한 네트워크 액세스 구성
사용자가 EC2 Instance Connect를 사용하여 인스턴스에 연결할 수 있도록 다음 네트워크 액세스를 구성해야 합니다.
-
사용자가 인터넷을 통해 인스턴스에 액세스하는 경우 인스턴스는 퍼블릭 IP 주소를 보유해야 하고 퍼블릭 서브넷에 있어야 합니다. 자세한 내용은 Amazon VPC 사용 설명서의 인터넷 액세스 활성화를 참조하세요.
-
사용자가 인스턴스의 프라이빗 IP 주소를 통해 인스턴스에 액세스하는 경우 사용자가 인스턴스의 프라이빗 IP 주소에 도달할 수 있도록 AWS Direct Connect, AWS Site-to-Site VPN 또는 VPC 피어링을 사용하여 VPC에 대한 프라이빗 네트워크 연결을 설정해야 합니다.
-
인스턴스와 연관된 보안 그룹이 IP 주소 또는 네트워크에서 포트 22를 통한 인바운드 SSH 트래픽을 허용하는지 확인하세요. VPC의 기본 보안 그룹은 기본적으로 수신 SSH 트래픽을 허용하지 않습니다. Launch Wizard가 생성한 보안 그룹은 기본적으로 수신 SSH 트래픽을 허용합니다. 자세한 내용은 Linux 인스턴스의 인바운드 트래픽 권한 부여 섹션을 참조하세요.
-
(Amazon EC2 콘솔 브라우저 기반 클라이언트) 인스턴스와 연결된 보안 그룹이 이 서비스의 IP 주소 범위에서 인바운드 SSH 트래픽을 허용하는지 확인합니다. 주소 범위를 식별하기 위해, AWS에서 제공하는 JSON 파일을 다운로드하고
EC2_INSTANCE_CONNECT
를 서비스 값으로 사용하여 EC2 Instance Connect 하위 집합을 필터링합니다. JSON 파일 다운로드 및 서비스별 필터링에 대한 자세한 내용은 Amazon Web Services 일반 참조에서 AWSIP 주소 범위를 참조하세요.
작업 2: (조건부) 인스턴스에 EC2 Instance Connect 설치
다음 AMI 중 하나를 사용하여 인스턴스를 시작한 경우 EC2 Instance Connect가 사전 설치되어 있으므로 이 태스크를 건너뛸 수 있습니다.
-
Amazon Linux 2 2.0.20190618 이상
-
Ubuntu 20.04 이상
이러한 AMI의 이전 버전의 경우 Instance Connect를 사용하여 연결을 지원하는 모든 인스턴스에 Instance Connect를 설치해야 합니다.
Instance Connect를 설치하면 인스턴스에 SSH 데몬이 구성됩니다. Instance Connect 설치 절차는 Amazon Linux 2 및 Ubuntu를 사용하여 시작된 인스턴스에 따라 다릅니다.
EC2 Instance Connect 패키지에 대한 자세한 내용은 GitHub 웹 사이트의 aws/aws-ec2-instance-connect-config
태스크 3: (선택 사항) 컴퓨터에 EC2 Instance Connect CLI 설치
EC2 Instance Connect CLI는 단일 명령인 mssh
를 통해 EC2 인스턴스에 연결할 수 있는 간소화된 환경을 제공합니다. 자세한 내용은 EC2 Instance Connect CLI를 사용하여 연결 섹션을 참조하세요.instance_id
사용자가 Amazon EC2 콘솔(브라우저 기반 클라이언트) 또는 SSH 클라이언트만 사용하여 인스턴스에 연결하는 경우, EC2 Instance Connect CLI를 설치할 필요가 없습니다.
EC2 Instance Connect CLI 패키지를 설치하려면
pip
를 사용하여 ec2instanceconnectcli
패키지를 설치합니다. 자세한 내용은 GitHub 웹 사이트의 aws/aws-ec2-instance-connect-cli
$
pip install ec2instanceconnectcli
작업 4: EC2 Instance Connect의 IAM 권한 구성
IAM 보안 주체가 EC2 Instance Connect를 사용하여 인스턴스에 연결할 경우 퍼블릭 키를 인스턴스에 푸시하도록 권한을 부여해야 합니다. IAM 정책을 생성하고 권한이 필요한 IAM 보안 주체에게 정책을 연결하여 권한을 부여하세요. 자세한 내용은 Amazon EC2 Instance Connect에 사용되는 작업, 리소스 및 조건 키를 참조하세요.
다음 지침에서는 정책을 생성하고 AWS CLI를 사용하여 IAM 사용자에게 정책을 연결하는 방법을 설명합니다. IAM 역할과 같은 다른 IAM 보안 주체에도 동일한 정책을 적용할 수 있습니다. AWS Management Console 사용 지침은 IAM 사용 설명서에서 IAM 정책 생성(콘솔), 사용자에게 직접 정책을 연결하여 권한을 추가 및 IAM 역할 생성을 참조하세요.
EC2 Instance Connect에 대한 IAM 보안 주체 권한을 부여하려면(AWS CLI)
-
다음 사항이 포함된 JSON 정책 문서를 생성합니다.
-
ec2-instance-connect:SendSSHPublicKey
작업 이 작업은 퍼블릭 키를 인스턴스에 푸시할 수 있는 권한을 IAM 보안 주체에게 부여합니다.ec2-instance-connect:SendSSHPublicKey
를 사용해 특정 EC2 인스턴스에 대한 액세스 제한을 고려하세요. 그렇지 않을 경우, 이 권한이 있는 모든 IAM 보안 주체가 모든 EC2 인스턴스에 연결할 수 있습니다. 리소스 ARN을 지정하거나 리소스 태그를 조건 키로 사용하여 액세스를 제한할 수도 있습니다. -
ec2:osuser
조건. 퍼블릭 키를 인스턴스로 푸시할 수 있는 OS 사용자의 이름을 지정합니다. 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 사용합니다. Amazon Linux 2의 기본 사용자 이름은ec2-user
이며 Ubuntu의 경우ubuntu
입니다. -
ec2:DescribeInstances
작업 이 작업은 래퍼가 이 작업을 호출하기 때문에 EC2 Instance Connect CLI를 사용할 때 필요합니다. IAM 보안 주체는 이미 다른 정책에서 이 작업을 호출할 권한을 보유할 수도 있습니다.
다음은 정책 문서의 예입니다. 사용자가 SSH 클라이언트만을 사용하여 인스턴스에 연결하는 경우
ec2:DescribeInstances
작업의 설명문을 생략할 수 있습니다. EC2 Instance Connect를 사용하는 모든 EC2 인스턴스에 대한 사용자 액세스 권한을 부여하도록Resource
에서 지정된 인스턴스를 와일드카드*
로 바꿀 수 있습니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": [ "arn:aws:ec2:
region
:account-id
:instance/i-1234567890abcdef0
", "arn:aws:ec2:region
:account-id
:instance/i-0598c7d356eba48d7
" ], "Condition": { "StringEquals": { "ec2:osuser": "ami-username
" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }앞의 정책은 인스턴스 ID로 식별되는 특정 인스턴스에 대한 액세스를 허용합니다. 또는 리소스 태그를 사용하여 인스턴스에 대한 액세스를 제어할 수 있습니다. 속성 기반 액세스 제어는 사용자 및 AWS 리소스에 연결할 수 있는 태그를 기반으로 권한을 정의하는 권한 부여 전략입니다. 예를 들어, 다음 정책은 IAM 사용자가 해당 인스턴스에 리소스 태그 key=
tag-key
및 value=tag-value
가 있는 경우에만 인스턴스에 액세스할 수 있도록 허용합니다. 태그를 사용하여 AWS 리소스에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 IAM 사용 설명서에서 AWS 리소스에 대한 액세스 제어를 참조하세요.{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ec2-instance-connect:SendSSHPublicKey", "Resource": "arn:aws:ec2:
region
:account-id
:instance/*
", "Condition":{ "StringEquals":{ "aws:ResourceTag/tag-key
":"tag-value
" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] } -
-
create-policy 명령을 사용하여 새 관리형 정책을 생성하고 사용자가 생성한 JSON 문서를 지정하여 새 정책의 콘텐츠로 사용합니다.
$
aws iam create-policy --policy-name
my-policy
--policy-document file://JSON-file-name
-
attach-user-policy 명령을 사용하여 지정된 IAM 사용자에게 관리형 정책을 연결합니다.
--user-name
파라미터의 경우 IAM 사용자의 알기 쉬운 이름(ARN 아님)을 지정합니다.$
aws iam attach-user-policy --policy-arn arn:aws:iam::
account-id
:policy/my-policy
--user-nameIAM-friendly-name