EC2 RHEL 환경에서 EC2 Instance Connect를 사용하여 접속해 보기

EC2 RHEL 환경에서 EC2 Instance Connect를 사용하여 접속해 보는 방법을 정리해 봤습니다.
2023.10.17

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 EC2 RHEL 환경에서 EC2 Instance Connect를 사용하여 접속해 보는 방법을 정리해 봤습니다.

이전에 작성한 EC2 Instance Connect 관련 내용은 아래 블로그를 참고해 주세요.

보안 그룹

먼저 EC2 Instance Connect 엔드포인트의 보안 그룹의 경우 인바운드 규칙에는 아무런 설정을 하지 않아도 됩니다.

아웃바운드는 디폴트 설정입니다.

다음은 EC2 인스턴스의 보안 그룹입니다.

인바운드 규칙에는 22번 포트를 열고, EC2 Instance Connect 엔드포인트의 보안 그룹을 설정합니다.

※ 아웃바운드 규칙의 경우 EC2 Instance Connect 엔드포인트의 보안 그룹과 동일하게 디폴트 설정입니다.

다음은 VPC 콘솔 화면으로 들어와서 엔드포인트를 생성합니다.

  • 이름 테그에 엔드포인트의 이름을 입력합니다.
  • 「EC2 인스턴스 연결 엔드포인트」를 선택합니다.

  • 엔드포인트를 생성할 VPC를 선택합니다.
  • 엔드포인트의 보안 그룹을 선택합니다.

  • 엔드포인트를 생성할 서브넷을 선택합니다.
    • 서브넷의 경우 엔드포인트를 Private 서브넷에 생성해두어도 각 Public, Private 모든 EC2에서 사용가능 합니다.
  • 「엔드포인트 생성」을 클릭합니다.

EC2 생성 후 접속 시도

생성한 EC2 인스턴스는 다음과 같습니다.

  • ami-044921b7897a7e0da (RHEL)
  • Private Subnet에 생성
  • 퍼블릭 아이피 없음

이어서 엔드포인트를 사용하여 접속을 시도하면 다음과 같은 에러 메시지가 표시됩니다.

EC2 Instance Connect 사용 시, 권장 버전보다 낮은 버전의 OS를 사용할 경우 다음과 같은 에러 메시지가 나타날 수도 있습니다.

하지만 이번 RHEL의 경우 버전 문제가 아닌, EC2 Instance Connect 패키지가 설치 되어 있지 않아 발생하는 에러입니다.

EC2 Instance Connect 패키지 설치

여기서 EC2 Instance Connect 패키지를 설치하고자 하면 몇 가지 문제점이 발생합니다.

현재 Private Subnet에 EC2 인스턴스가 생성되어 있으며, 해당 EC2 인스턴스에는 접속이 불가능한 상태입니다.

해당 EC2 인스턴스에 접속하기 위해서는 임시로 인터넷 게이트웨이와 EIP를 할당해서 접속할 필요가 있습니다.

접속 과정은 아래 블로그에서 설명하고 있습니다.

문제 없이 EC2 인스턴스에 들어왔다면, EC2 Instance Connect 패키지를 설치합니다.

sudo yum install -y rpm-build make git python3
git clone https://github.com/aws/aws-ec2-instance-connect-config.git

EC2 Instance Connect 설정에 필요한 패키지와, 깃 허브 리포지토리에서 EC2 Instance Connect 패키지를 다운로드 합니다.

cd aws-ec2-instance-connect-config
sudo make rpm
sudo rpm -ivh rpmbuild/RPMS/noarch/ec2-instance-connect-1.1-18.noarch.rpm

sudo echo -e '\n# EC2 Instance Connect configuration\nAuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f\nAuthorizedKeysCommandUser ec2-instance-connect' | sudo tee -a /etc/ssh/sshd_config

다운로드한 패키지를 빌드하고 설치합니다.

이어서, ssh_config에 EC2 Instance Connect 연결에 필요한 설정을 추가합니다.

sudo systemctl restart sshd
sudo setenforce 0

마지막으로 sshd를 다시 시작하고, SELinux를 무효화합니다.

※ SELinux가 유효화된 상태일 경우 EC2 Instance Connect 엔드포인트를 사용할 수 없습니다.

SELinux를 영구적으로 무효화 시키고 싶다면

  • sudo vi /etc/selinux/config

으로 들어와서「SELINUX」의 enforcing를 disabled로 변경합니다.

EC2 Instance Connect를 사용하여 접속

  • 「EC2 인스턴스 연결 엔드포인트를 사용하여 연결」을 선택합니다.
  • 조금 전 생성한 엔드포인트를 선택합니다.
  • 「연결」을 클릭합니다.

※ 임시로 생성한 인터넷 게이트웨이, EIP는 삭제 혹은 연결 해제한 상태입니다.

이번에는 문제 없이 접속되는 것을 확인할 수 있습니다.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !