EC2 Instance Connect로 Linux 인스턴스에 연결하기

EC2 Instance Connect로 Linux 인스턴스에 연결하기 (Connect to a Linux instance using EC2 Instance Connect)

Amazon EC2 콘솔, AWS CLI, 또는 SSH 클라이언트를 통해 EC2 Instance Connect로 Linux 인스턴스에 연결하는 방법을 설명해요.

출처: 문서

본문

콘솔이나 AWS CLI로 EC2 Instance Connect를 사용해 인스턴스에 연결하면, EC2 Instance Connect API가 SSH 공개 키를 인스턴스 메타데이터에 자동으로 푸시하고 그 키는 60초 동안 유지돼요. 사용자에게 연결된 IAM 정책이 이 작업을 승인해요. 자체 SSH 키를 사용하고 싶다면 SSH 클라이언트를 사용하고 EC2 Instance Connect로 자신의 SSH 키를 인스턴스에 명시적으로 푸시할 수 있어요.

고려 사항 (Considerations)

EC2 Instance Connect로 인스턴스에 연결한 후에는 SSH 세션이 종료될 때까지 연결이 지속돼요. 연결 기간은 IAM 자격 증명의 기간에 따라 결정되지 않아요. IAM 자격 증명이 만료돼도 연결은 계속 유지돼요. 콘솔 환경을 쓸 때 IAM 자격 증명이 만료되면 브라우저 페이지를 닫아 연결을 종료해요. 자체 SSH 클라이언트와 EC2 Instance Connect로 키를 푸시할 때는 SSH 타임아웃 값을 설정해 SSH 세션을 자동 종료할 수 있어요.

요구 사항

시작하기 전에 전제 조건을 검토하세요.

Amazon EC2 콘솔로 연결하기 (Connect using the Amazon EC2 console)

콘솔로 연결하려면 인스턴스에 공용 IPv4 또는 IPv6 주소가 있어야 해요. 인스턴스에 사설 IPv4 주소만 있으면 ec2-instance-connect AWS CLI를 사용해 연결할 수 있어요.

  1. Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
  2. 탐색 창에서 Instances를 선택해요.
  3. 인스턴스를 선택하고 Connect를 선택해요.
  4. EC2 Instance Connect 탭을 선택해요.
  5. Connect using a Public IP를 선택해요.
  6. 선택지가 있다면 연결할 IP 주소를 선택해요. 그렇지 않으면 IP 주소가 자동으로 선택돼요.
  7. Username에서 사용자 이름을 확인해요.
  8. Connect를 선택해 연결을 수립해요. 브라우저 내 터미널 창이 열려요.

AWS CLI로 연결하기 (Connect using the AWS CLI)

ec2-instance-connect AWS CLI로 SSH 클라이언트와 함께 인스턴스에 연결할 수 있어요. EC2 Instance Connect는 지정된 연결 유형에 따라 미리 정의된 순서로 사용 가능한 IP 주소로 연결을 시도해요. IP 주소를 사용할 수 없으면 자동으로 순서상 다음 주소를 시도해요.

연결 유형 (Connection types)

  • auto(기본값) – EC2 Instance Connect가 다음 순서와 해당 연결 유형으로 인스턴스의 IP 주소로 연결을 시도해요: Public IPv4(direct), Private IPv4(eice), IPv6(direct).
  • direct – 다음 순서로 시도해요: Public IPv4, IPv6, Private IPv4(EC2 Instance Connect Endpoint로는 연결하지 않음).
  • eice – 인스턴스의 사설 IPv4 주소와 EC2 Instance Connect Endpoint로 연결을 시도해요.

참고: 앞으로 auto 연결 유형의 동작이 바뀔 수 있어요. 원하는 연결 유형이 사용되도록 하려면 --connection-type을 direct 또는 eice로 명시적으로 설정하세요.

반드시 AWS CLI 버전 2를 사용해야 해요.

인스턴스 ID로 연결 — 인스턴스 ID만 알고 인스턴스에 연결할 때 사용할 연결 유형을 EC2 Instance Connect가 결정하게 하려면 ec2-instance-connect ssh CLI 명령을 인스턴스 ID와 함께 사용해요.

aws ec2-instance-connect ssh --instance-id i-1234567890example

인스턴스 ID와 EC2 Instance Connect Endpoint로 연결 — EC2 Instance Connect Endpoint로 연결하려면 앞 명령에 --connection-type 파라미터를 eice 값으로 지정해요.

aws ec2-instance-connect ssh --instance-id i-1234567890example --connection-type eice

인스턴스 ID와 자체 개인 키 파일로 연결 — 자체 개인 키로 EC2 Instance Connect Endpoint를 통해 연결하려면 인스턴스 ID와 개인 키 파일 경로를 지정해요. 경로에 file://을 포함하지 마세요. 다음 예시는 실패해요: file:///path/to/key.

aws ec2-instance-connect ssh --instance-id i-1234567890example --private-key-file /path/to/key.pem

팁: 이 명령에서 오류가 나면 AWS CLI 버전 2를 사용하고 있는지 확인하세요. ssh 명령은 이 주요 버전에서만 사용할 수 있어요. 최신 기능에 접근하려면 AWS CLI 버전 2의 최신 마이너 버전으로 정기적으로 업데이트하는 것도 권장해요.

자체 키와 SSH 클라이언트로 연결하기 (Connect using your own key and SSH client)

EC2 Instance Connect API를 사용하면서 자체 SSH 키로 원하는 SSH 클라이언트에서 연결할 수 있어요. 이렇게 하면 EC2 Instance Connect가 공개 키를 인스턴스에 푸시하는 기능을 활용할 수 있어요. 이 연결 방식은 공용·사설 IP 주소를 가진 인스턴스 모두에 동작해요.

키 페어 요구 사항: 지원 유형은 RSA(OpenSSH 및 SSH2)와 ED25519이고, 지원 길이는 2048과 4096이에요.

사설 IP 주소만 가진 인스턴스에 연결할 때는 SSH 세션을 시작하는 로컬 컴퓨터가 SSH 공개 키를 푸시할 EC2 Instance Connect 서비스 엔드포인트에 연결할 수 있어야 하고, SSH 세션을 수립하기 위해 인스턴스 사설 IP 주소에도 네트워크 연결이 있어야 해요. EC2 Instance Connect 서비스 엔드포인트는 인터넷이나 Direct Connect 공용 가상 인터페이스로 접근할 수 있어요. 사설 IP 주소 연결에는 Direct Connect, AWS Site-to-Site VPN, VPC peering 같은 서비스를 활용할 수 있어요.

연결 단계:

  1. (선택) 새 SSH 개인·공용 키 my_key와 my_key.pub를 생성해요:
    ssh-keygen -t rsa -f my_key
    
  2. SSH 공개 키를 인스턴스에 푸시 — send-ssh-public-key 명령을 사용해요. AL2023 또는 Amazon Linux 2로 시작했다면 기본 사용자 이름은 ec2-user이고, Ubuntu라면 ubuntu예요. 다음 예시는 지정한 인스턴스에 공개 키를 푸시해 ec2-user를 인증해요.
    aws ec2-instance-connect send-ssh-public-key \
        --region us-west-2 \
        --availability-zone us-west-2b \
        --instance-id i-001234a4bf70dec41EXAMPLE \
        --instance-os-user ec2-user \
        --ssh-public-key file://my_key.pub
    
  3. 개인 키로 인스턴스에 연결 — 공개 키가 인스턴스 메타데이터에서 제거되기 전(제거되기까지 60초)에 ssh 명령으로 연결해요. 공개 키에 해당하는 개인 키, 인스턴스 시작 시 사용한 AMI의 기본 사용자 이름, 인스턴스의 공용 DNS 이름을 지정해요(사설 네트워크로 연결한다면 사설 DNS 이름이나 IP 주소). 연결에 ssh 구성 파일과 지정한 키만 사용되도록 IdentitiesOnly=yes 옵션을 추가해요.
    ssh -o "IdentitiesOnly=yes" -i my_key [email protected]
    
    다음 예시는 timeout 3600으로 SSH 세션을 1시간 후 종료하도록 설정해요. 세션 중 시작된 프로세스는 세션 종료 후에도 인스턴스에서 계속 실행될 수 있어요.
    timeout 3600 ssh -o "IdentitiesOnly=yes" -i my_key [email protected]
    

문제 해결 (Troubleshoot)

연결 중 오류가 발생하면 다음을 참고하세요.

  • "Troubleshoot issues connecting to your Amazon EC2 Linux instance"
  • "How do I troubleshoot issues connecting to my EC2 instance using EC2 Instance Connect?"

더 알아보기