MONG 기술블로그

AWS EC2 콘솔에서 SSH 접속하기 (System Manager) 본문

AWS/EC2

AWS EC2 콘솔에서 SSH 접속하기 (System Manager)

MJHmong 2022. 2. 13. 19:53

일반적으로 원격지 리눅스 서버에 접속하는 방법은 다음과 같다.

 

1.ssh 접속을 위해 putty를 준비한다.

2.PC ( Client )에서 ssh 인증을 위해 사용할 공개키/비밀키 쌍을 생성한다.

3.생성한 공개키를 원격지 서버에 등록한다.

4.원격지 서버에 ssh를 통해 접속한다.

 

혹은 표준 이미지를 생성하여 계정정보를 사전에 정의해놓음으로써 2-3과정을 생략할 수도 있다.

하지만 이마저도 putty가 필요하며 취약 포트인 TCP 22번을 오픈해야 접속이 가능하다.

 

따라서 AWS EC2에서만 가능하지만 Session Manager를 사용하여

-> TCP 22번 포트를 오픈하지않고 ( 보안성 뛰어남 )

-> Putty 와같은 타 S/W를 설치할 필요없이, 콘솔을 이용하여 바로 EC2에 접속하는 방법에 대해 알아보자.

 

결과부터 보여주면 아래와 같다.

 

1.AWS 콘솔 접속 -> EC2 -> 원하는 EC2 클릭 -> 우측 상단의 "연결" 클릭

 

2.연결 클릭 후 Session Manager 탭에서 "연결"을 다시한번 클릭하면 아래와 같이 바로 대화형 쉘에 접속이 가능하다.

 

 

매우 간편하므로.. 간략하게  Session Manager에 대해 간략하게 알아보고 , 세팅 방법까지 알아보자.

 

 

 Session Manager란

 

우선 Session Manager는 AWS의 System Manager에 속한 기능중에 하나이다.

또한 접속 시 안내문구를 간략하게 살펴보면 다음과 같다.

 

Session Manager 사용:
  • SSH 키 또는 배스천 호스트를 사용하지 않고 인스턴스에 연결합니다.
  • 세션은 AWS Key Management Service 키를 사용하여 보호됩니다.
  • 세션 명령 및 세부 정보를 Amazon S3 버킷 또는 CloudWatch Logs 로그 그룹에 기록할 수 있습니다.
  • Session Manager 기본 설정 페이지에서 세션을 구성합니다.

 

 

 Session Manager 세팅하기

 

다음 AWS Document를 참고하여 작성하였다. 

 

필요사항을 정리하면 다음과 같다.

 

Require 1. (필수사항) Amazon SSMAgent가 설치되어 있어야 한다. ( AWS에서 제공하는 AMI의 경우 기본적으로 설치 ) 

Require 2. EC2에서 사용할 Session Manager 권한이 있는 IAM Role Profile이 필요

Require 3. Session Manager 서비스 관련 엔드포인트와의 통신이 필요.

  - 방법 1. 인터넷 통신을 가능하게해서 엔드포인트와의 통신이 가능하도록 설정.

  - 방법 2. (세팅예시)Private Endpoint를 생성하여 엔드포인트와의 통신이 가능하도록 설정.

 

이 몇가지 제약사항 중 주관적으로 생각했을때 가장 일반적인 경우(AMI 사용 & 인터넷 연결 불가)에 대해 세팅해보자.

 

 

 

 준비물

서비스명 설명 자원명 상세
IAM Role EC2 자원에 적용할 IAM Role session-manager-role AmazonSSMManagedInstanceCore
정책 추가.
Security Group 엔드포인트에서 사용할 보안 그룹  session-manager-sg Inbound TCP 443(HTTPS) 추가.
Endpoint com.amazonaws.region.ssm endpoint-ssm ssm 엔드포인트
Endpoint com.amazonaws.region.ec2message endpoint-ec2message SSM Agent에서 사용하는 엔드포인트
Endpoint com.amazonaws.region.ec2 endpoint-ec2 EC2 서비스에 대한 엔드포인트
Endpoint com.amazonaws.region.ssmemssages endpoint-ssmemssages ssm-message 엔드포인트

 

이제 준비물에 명시된 자원을 하나씩 생성해보자.

 

 

[Require 2]  EC2에서 사용할 IAM Role Profile 생성 

IAM Role 생성

IAM Role을 생성한다. EC2에 적용할 Role 이므로 AWS 서비스 및 사용 사례에 EC2를 선택한다.

 

IAM Role 정책 추가

IAM Role에 "AmazonSSMManagedInstanceRole" 정책을 추가한다. ( System Manager 관련 권한 )

 

IAM 역할 생성

역할 이름을 사전에 약속한 "session-manager-role" 로 입력한 뒤 IAM 역할을 생성한다.

 

 

[Require 3] Session Manger Endpoint에서 사용할 보안 그룹을 사전 생성한다.

Endpoint는 HTTPS 통신을 사용하므로 인바운드 규칙에 HTTPS 를 Any로 추가한다.

 

 

[Require 3] Session Manager 서비스 관련 엔드포인트를 생성한다.

 

생성 대상 엔드포인트 목록

- com.amazonaws.region.ssm

- com.amazonaws.region.ssmmessage

- com.amazonaws.ec2

- com.amazonaws.ec2message

 

 

생성 대상 엔드포인트 4개에 대해 다음을 반복한다. ( 이미지 참고 )

이때 VPC 및 Subnet은 EC2가 포함된 개인의 설정에 따라 이미지 예시를 참고하여 알맞게 선택하자.

보안그룹은 방금 위에서 생성한 session-manager-sg 로 설정한다. ( 인바운드 HTTPS 설정된 SG )

 

엔드포인트 생성 - 서비스
엔드포인트 생성 - 네트워크 및 보안그룹 설정

 

[Require 2] EC2에 IAM Role 적용 ( session-manager-role )

EC2 IAM 역할 수정

Session Manager 접속이 필요한 EC2를 선택하여 "작업" -> "보안" -> IAM 역할 수정을 선택한다.

 

EC2 IAM 역할 수정 - session-manager-role

session-manager-role을 선택한다.

 

 

 

 Session Manager 연결 확인 - Private Subnet & 적용된 SG 룰 확인

 

라우팅 규칙

- 연결된 IGW 혹은 NAT관련 룰 없음

 

Security Group

- EC2에 적용된 Security Group에 SSH 인바운드 규칙 없음

 

 Session Manager 연결

SessionManager 연결
Session Manager 연결 성공

 

Private Subnet 환경 및 SSH 인바운드 설정 없이 Session Manager 및 AWS Console을 이용하여 SSH 연결하는 실습을 진행했다.

 

궁금한 점은 댓글로 남겨주시면 최대한 빠르게 답변드리겠습니다. 많은 도움이 되었으면 좋겠어요.

 

긴 글 읽어주셔서 감사합니다.

'AWS > EC2' 카테고리의 다른 글

프로세스 모니터링 ( ps , top, lsof )  (0) 2022.03.27
Linux 기본 세팅 ( 계정 , TimeZone , NTP , Selinux )  (0) 2022.02.12
Comments