EC2를 사용하다 보면 SSH Key 파일이 없는데 급하게 서버에 붙어야 하는 상황이 생기게 된다. AWS에서는 session manager 라는 기능을 제공하여 key 파일 없이 AWS console에서 EC2에 접속할 수 있도록 한다.
session manager란 : https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager.html
EC2의 우측 상단에 있는 연결 버튼을 클릭하여 인스턴스에 연결 화면으로 이동한다. Session Manager 탭을 클릭하면 연결 버튼이 활성화 되어 있는 경우 바로 연결 하면 되지만, 대부분의 경우 아래와 같이 비활성화가 되어있다.
Session Manager(SSM) 사전 조건
session manager 를 사용하기 위해서는 아래 조건을 만족해야 한다.
– EC2 Role에 session manager 를 사용할 수 있는 권한이 포함되어야 한다.
– EC2에 session manager agent 가 설치되어야 한다. (AMI 사용시 session manage agent가 포함된 경우도 있지만, 아닌경우 수동으로 설치해야 한다.)
– EC2의 outbound에 443 포트가 any로 오픈 되어 있어야 한다. SSM은 443으로 EC2와 통신하기 때문에 443을 any로 열어주어야 접속 가능하다.
EC2 Role에 Session Manager 권한(정책) 추가하기
인스턴스 선택 후 작업 – 보안 – IAM 역할 수정을 선택한다.
아래 정책(AmazonEC2RoleforSSM)을 포함한 IAM 역할을 생성하여 인스턴스에 붙인다. AmazonEC2RoleforSSM 정책은 SSM을 사용하기 위해 AWS에서 관리하는 관리형 정책이다.
EC2 에 SSM Agent 설치하기
아래 가이드 문서를 참고하여 각자의 OS에 맞는 명령어를 수행한다.
https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/sysman-manual-agent-install.html
debian server 10 기준으로 설치 과정을 설명한다.
임시 디렉토리로 변경하여 해당되는 리전(ap-northeast-2)의 SSM agent를 설치한다.
mkdir /tmp/ssm
cd /tmp/ssm
wget https://s3.ap-northeast-2.amazonaws.com/amazon-ssm-ap-northeast-2/latest/debian_amd64/amazon-ssm-agent.deb
sudo dpkg -i amazon-ssm-agent.deb
아래 명령어를 수행하여 ssm agent가 실행중인지 확인한다.
sudo systemctl status amazon-ssm-agent
상태가 active가 아닌 stoppted, inactive, disabled로 나오는 경우 아래 명령어를 실행하여 서비스를 시작한다.
sudo systemctl enable amazon-ssm-agent
로그는 아래 경로에서 확인할 수 있다.
sudo cat /var/log/amazon/ssm/amazon-ssm-agent.log
EC2의 outbound rule에 443 추가하기
EC2의 security group에 443 any Rule을 추가한다.
SSM을 활용하여 EC2에 연결하기
위의 조건을 전부 만족하면 연결 버튼이 활성화 된다. 연결 버튼을 클릭하여 인스턴스에 접속한다.
Role을 먼저 추가한 후 agent를 설치해야 agent 서비스가 실행되면서 role 의 정책을 확인한다. 위의 과정을 다 수행했는데도 제대로 연결이 되지 않는 경우 agnet를 재실행한다.
sudo systemctl restart amazon-ssm-agent
key 파일 없이도 EC2에 연결이 가능해졌다.
아래 명령어를 수행하여 SSH 접속과 동일하게 원하는 사용자로 변경하여 사용가능하다.
sudo su - {user명}
이렇게 연결되는 세션은 AWS의 System Manager 서비스에서 조회 및 관리가 가능하다.
'AWS' 카테고리의 다른 글
S3 public 열지 않고 public 처럼 사용하기(pre-signed url 발행) (0) | 2023.01.03 |
---|---|
EC2에서 access key 없이 role 활용하여 사용하기(Java aws sdk credential) (0) | 2023.01.03 |
Cloud watch에서 EC2 메모리 모니터링 (0) | 2023.01.03 |
AWS 주요 리소스 및 요금 정리 (0) | 2023.01.03 |
[도서리뷰] 배워서 바로 쓰는 14가지 AWS 구축 패턴 (0) | 2020.07.24 |