일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- heapq
- Jenkins
- 프로그래머스
- terraform
- session manager
- endpoint
- 인텔리제이
- binarysearch
- linuxr계정설정
- lsof
- java
- Docker
- terraform 기본개념
- terraform main commands
- JWT
- terraform backend
- Timezon설정
- terraform variable
- SELinux비활성화
- Process monitoring
- Python
- s3
- 이진탐색
- Jenkinspipeline
- algorithm
- PrivateSubnet
- Mac
- haproxy
- ec2
- terraform 설치
- Today
- Total
MONG 기술블로그
AWS EC2 콘솔에서 SSH 접속하기 (System Manager) 본문
일반적으로 원격지 리눅스 서버에 접속하는 방법은 다음과 같다.
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에 속한 기능중에 하나이다.
또한 접속 시 안내문구를 간략하게 살펴보면 다음과 같다.
- 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을 생성한다. EC2에 적용할 Role 이므로 AWS 서비스 및 사용 사례에 EC2를 선택한다.
IAM Role에 "AmazonSSMManagedInstanceRole" 정책을 추가한다. ( System Manager 관련 권한 )
역할 이름을 사전에 약속한 "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 )
Session Manager 접속이 필요한 EC2를 선택하여 "작업" -> "보안" -> IAM 역할 수정을 선택한다.
session-manager-role을 선택한다.
■ Session Manager 연결 확인 - Private Subnet & 적용된 SG 룰 확인
라우팅 규칙
- 연결된 IGW 혹은 NAT관련 룰 없음
Security Group
- EC2에 적용된 Security Group에 SSH 인바운드 규칙 없음
■ 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 |