[AWS] 챕터3 EC2 - EC2 기초(2)

업데이트:     Updated:

카테고리:

태그:

🎯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 콘솔을 사용하여 연결

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.
  2. 탐색 창에서 인스턴스(Instances)를 선택합니다.
  3. 인스턴스를 선택한 다음 연결을 선택합니다.
  4. EC2 Instance Connect를 선택합니다.
  5. 사용자 이름을 확인하고 연결을 선택하여 터미널 창을 엽니다

1.2.2 EC2 Instance Connect CLI를 사용하여 연결

  • Instance Connect CLI에서는 인스턴스 ID만 제공하면 한 번의 호출로 인스턴스에 연결할 수 있습니다.
  • Instance Connect CLI는 3가지 작업을 수행합니다.
    1. 일회용 SSH 퍼블릭 키 생성
    2. 인스턴스에 퍼블릭 키 푸시 (60초 동안 유지)
    3. 사용자를 인스턴스에 연결
  • 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 인스턴스용 사용 설명서


👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄

맨 위로 이동하기

SAA 카테고리 내 다른 글 보러가기

댓글남기기