[AWS] 챕터3 EC2 - EC2 기초(2)
카테고리: SAA
태그: SAA
🎯EC2 연결
- EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결
- OpenSSH를 사용하여 Windows에서 연결
1. EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결
- Amazon EC2 Instance Connect를 사용하면 IAM 정책을 사용하여 인스턴스에 대한 SSH 엑세스를 제어할 수 있습니다.
- 또한 SSH 키를 공유 및 관리할 필요가 없고 EC2 Instance Connect를 사용하는 모든 연결 요청은 CloudTrail에 로깅되므로 연결 요청을 감사할 수 있습니다.
1.1 EC2 Instance Connect 설정
EC2 Instance Connect를 사용하여 인스턴스에 연결하려면 Instance Connect를 사용할 모든 IAM 보안 주체에게 권한을 부여해야 합니다.
1.1.1 인스턴스에 대한 네트워크 액세스 구성
- 사용자가 인터넷을 통해 인스턴스에 액세스하는 경우 인스턴스는 퍼블릭 IP 주소를 보유해야 하고 퍼블릭 서브넷에 있어야 합니다.
- 인스턴스에 연결된 보안 그룹 규칙에 22번 포트에 대한 인바운드 트래픽을 허용해야 합니다.
- 인스턴스에 연결된 보안 그룹 규칙에 연결 가능한 소스로 올바른 IP 주소 범위가 지정되어 있는지 확인합니다.
1.1.2 인스턴스에 EC2 Instance Connect 설치 (Optional)
- 다음 AMI 중 하나를 사용하여 인스턴스를 생성한 경우 EC2 Instance Connect가 사전에 설치되어 있으므로 이 태스크는 생략 가능합니다.
- Amazon Linux 2 2.0.20190618 이상
- Ubuntu 20.04 이상
- 이러한 AMI 이전 버전의 경우 Instance Connect로 연결하려는 인스턴스에 Instance Connect를 설치해야 합니다.
- Instance Connect를 설치하면 인스턴스에 SSH 데몬이 구성됩니다.
- Instance Connect 설치 절차를 참고하세요.
1.1.3 로컬 PC에 EC2 Instance Connect CLI 설치 (Optional)
- EC2 Instance Connect CLI는 단일 명령인
mssh instance_id를 통해 EC2 인스턴스에 연결할 수 있는 간소화된 환경을 제공합니다. - 사용자가 Amazon EC2 콘솔 또는 SSH 클라이언트만 사용하여 인스턴스에 연결하는 경우, EC2 Instance Connect CLI는 불필요합니다.
- EC2 Instance Connect CLI 패키지 설치를 참고하세요
1.1.4 EC2 Instance Connect의 IAM 권한 구성
- IAM 보안 주체가 EC2 Instance Connect를 사용하여 인스턴스에 연결할 경우 퍼블릭 키를 인스턴스에 푸시하도록 권한을 부여해야 합니다.
- IAM 정책을 생성하고 권한이 필요한 IAM 보안 주체에게 정책을 연결하여 권한을 부여합니다.
- 다음은 정책 문서의 예입니다.
{
"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": "*"
}
]
}
ec2-instance-connect:SendSSHPublicKey: 퍼블릭 키를 인스턴스에 푸시할 수 있는 권한을 IAM 보안 주체에게 부여합니다.ec2:osuser: 퍼블릭 키를 인스턴스로 푸시할 수 있는 OS 사용자의 이름을 지정합니다. 인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 사용합니다. Amazon Linux 2의 기본사용자 이름은ec2-user이며 Ubuntu의 경우ubuntu입니다.ec2:DescribeInstance: EC2 Instance Connect CLI를 사용할 때 필요합니다.
1.2 C2 Instance Connect를 사용한 연결
EC2 Instance Connect를 사용하여 Linux 인스턴스에 연결하는 방법을 살펴봅니다.
1.2.1 Amazon EC2 콘솔을 사용하여 연결
- https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.
- 탐색 창에서 인스턴스(Instances)를 선택합니다.
- 인스턴스를 선택한 다음 연결을 선택합니다.
- EC2 Instance Connect를 선택합니다.
- 사용자 이름을 확인하고 연결을 선택하여 터미널 창을 엽니다
1.2.2 EC2 Instance Connect CLI를 사용하여 연결
- Instance Connect CLI에서는 인스턴스 ID만 제공하면 한 번의 호출로 인스턴스에 연결할 수 있습니다.
- Instance Connect CLI는 3가지 작업을 수행합니다.
- 일회용 SSH 퍼블릭 키 생성
- 인스턴스에 퍼블릭 키 푸시 (60초 동안 유지)
- 사용자를 인스턴스에 연결
- Instance Connect CLI에서 기본 SSH/SFTP 명령을 사용할 수 있습니다.
- EC2 Instance Connect CLI를 사용하여 인스턴스에 연결하려면 다음과 같이 mssh 명령을 사용합니다.
# Amazon Linux 2
mssh [인스턴스 ID]
# Ubuntu
mssh ubuntu@[인스턴스 ID]
2. OpenSSH를 사용하여 Windows에서 Linux 인스턴스에 연결
2.1 PowerShell 사전 조건
- PowerShell Version >= 5.1
- PowerShell 실행 계정은 관리자 그룹의 맴버여야 합니다.
- 다음은 관리자 그룹의 멤버인지 확인하는 PowerShell 명령입니다.
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]` ::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
2.2 PowerShell을 사용하여 Windows용 OpenSSH 설치
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Path :
Online : True
RestartNeeded : False
2.3 OpenSSH를 사용하여 연결
PowerShell 또는 명령 프롬프트에서 ssh 명령을 사용하여 인스턴스에 연결합니다. 다음은 그 예입니다.
ssh -i /path/key-pair-name.pem instance-user-name@instance-public-address
The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (198-51-100-1)' can't be established.
ECDSA key fingerprint is l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (ECDSA) to the list of known hosts.
-i: 인스턴스 생성 시 다운받은 퍼블릭 키의 경로를 입력합니다.instance-user-name:- Amazon Linux 2: ec2-user
- Ubuntu : ubuntu
instance-public-address:- public IPv4/IPv6
- DNS Name
- Private IPv4/IPv6 - VPC 피어링 or Direct Connect or VPN 을 통한 Private 통신이 구성 되어있어야 함
📖출처
AWS > Documentation > Amazon EC2 > Linux 인스턴스용 사용 설명서
👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄
댓글남기기