AWS EIC (EC2 Instance Connect) 연결 및 장애 조치 방법
2020년 8월 21일, LACNIC(라틴아메리카 및 카리브해 지역을 대상으로 하는 인터넷 주소 등록기관)에서는 마지막 IPv4 할당을 완료하였다고 발표함에 따라 사용가능한 IPv4 주소는 더이상 남아있지 않습니다. 이처럼 IPv4 주소가 고갈된 상황 속에서 AWS는 IPv4 주소의 유료화 정책을 발표하였습니다.
2024년 2월 1일 기준으로 AWS의 모든 퍼블릭 IPv4 주소에 대해서 서비스 연결 여부와 무관하게 $0.005 달러의 요금이 발생합니다. 기존에는 계정에 할당되어 있지만 사용하지 않는 퍼블릭 IPv4에만 요금이 부과되었다면, 요금 체계 변경 이후로는 사용중인 IPv4 주소에 대해서 모두 비용이 부과됩니다. 유휴 퍼블릭 IPv4와 서비스와 연결된 IPv4에 대한 요금은 $0.005로 동일합니다.
Amazon EC2 Instance Connect는 퍼블릭 IP 주소 없이 SSH 및 RDP 연결 지원하여 퍼블릭 IPv4 주소를 사용할 필요가 없습니다. 이를 통해 이전에는 고객이 프라이빗 IP 주소가 있는 인스턴스로 SSH/RDP 연결을 터널링하기 위해 Bastion Host를 생성할 필요가 없어짐에 따라서 Bastion을 유지 관리하는 데 드는 비용 및 운영 오버헤드를 없애줍니다.
일반적으로 VPC 엔드포인트는 약 $10/월 비용이 발생하지만, 예외로 EIC엔드포인트와 S3 Gateway용 엔드포인트는 비용이 발생하지 않기 때문에 공인 IPv4 사용이 필수적이지 않는 상황이라면 고려해볼만 합니다.
설정 방법은 다음과 같습니다.
VPC → 엔드포인트 항목으로 접속하여 엔드포인트 생성 을 진행합니다.
엔드포인트 생성 항목에서 접속하고자 하는 VPC를 선택합니다.
보안그룹을 선택하고 서브넷을 지정합니다. 이때 반드시 Public 서브넷을 선택할 필요는 없으며, 내부 통신이 가능한 상태면 됩니다.
이후 엔드포인트 생성 을 클릭합니다.
EIC 엔드포인트 생성이 완료되었습니다. 생성이 완료되기 까지 약 10분 정도가 소요됩니다.
생성 가능한 EIC 엔드포인트의 갯수는 지정되어 있으며 다음과 같습니다.
- AWS 계정당 5개
- VPC당 1개
- 서브넷당 1개
VPC당 1개의 EIC 엔드포인트를 생성할 수 있기 때문에, EIC 엔드포인트가 위치한 AZ에 장애가 발생할 경우에는 서비스 사용에 문제가 생길 수 있는 점은 주의해야 합니다.
EIC 생성이 완료되면 다음과 같이 표기됩니다.
이후 인스턴스 연결 항목에 접속하여 EC2 인스턴스 연결 엔드포인트를 사용하여 연결을 선택합니다.
위에서 생성한 EIC 엔드포인트를 선택하고 연결을 클릭하면 아래와 같이 정상적으로 접속되고 있음을 확인할 수 있습니다.
만약 연결중에 오류가 발생한다면 다음과 같은 해결 방법을 시도해 보시기 바랍니다.
- Failed to connect to your instance Error establishing SSH connection to your instance. Try again later.
- 사용하고 있는 OS가 권장 버전보다 낮은 버전의 OS를 사용할 경우
- 아래와 같은 OS 버전을 사용하지 않은 경우 오류가 발생할 수 있습니다.
- Amazon Linux 2 2.0.20190618 이상
- 우분투 20.04 이상
- 아래와 같은 OS 버전을 사용하지 않은 경우 오류가 발생할 수 있습니다.
EC2 Instance Connect가 자동 설치가 되어 있지 않아 발생하는 오류이기 때문에 설치를 진행합니다.
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install ec2-instance-connect -y
$ sudo yum update -y
$ sudo yum install ec2-instance-connect -y
설치 확인
sudo less /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf
[Service]
ExecStart=
ExecStart=/usr/sbin/sshd -D -o "AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys %%u %%f" -o "AuthorizedKeysCommandUser ec2-instance-connect" $SSHD_OPTS
/lib/systemd/system/ssh.service.d/ec2-instance-connect.conf
- 보안그룹이 정상적으로 설정되어 있는지 확인합니다.
- 로컬 컴퓨터의 퍼블릭 IPv4 주소에서 들어오는 인바운드 트래픽을 적절한 포트로 허용하는 보안 그룹 규칙이 필요합니다.
- Linux 인스턴스: 로컬 컴퓨터에서 포트 22(SSH)로의 트래픽을 허용하는 규칙이 있는지 확인합니다.
- Windows 인스턴스: 로컬 컴퓨터에서 포트 3389(RDP)로의 트래픽을 허용하는 규칙이 있는지 확인합니다.
- 로컬 컴퓨터의 퍼블릭 IPv4 주소에서 들어오는 인바운드 트래픽을 적절한 포트로 허용하는 보안 그룹 규칙이 필요합니다.
- 키페어 생성이 되어 있지 않은 경우
- 인스턴스 접속을 위한 키를 생성하지 않은경우 접속이 불가할 수 있습니다. 키 생성후 다시 접속을 시도합니다.