이 글에서는 System Manager를 이용한 ec2 원격 쉘 접속방법을 설명합니다.
1. 베스천호스트를 이용한 원격쉘 접속
private subnet에 위치한 ec2는 외부에서 접근이 불가능하기 때문에, 클라이언트가 ec2 원격쉘 접속이 불가능합니다.
베스천호스트는 private subnet에 위치한 ec2원격 쉘접속을 위해 나온 해결방법입니다. 베스천호스트는 ec2인스턴스로서 public subnet에 위치합니다. 클라이언트는 베스천호스트로 원격쉘 접속을 한 다음, private ec2에 원격쉘 접속하여 private ec2에 접근할 수 있습니다.
2. 베스천호스트 불편한점
베스천호스트는 몇가지 불편한점이 있는데요. 대표적으로 ssh키관리와 베스천호스트 접속대상 관리입니다. 사용자가 많으면 많을 수록 관리해야하는 ssh키와 접근관리목록이 많아집니다.
3. Systems Manager를 이용한 EC2 원격쉘 접속
aws systems manager를 이용하면 베스천호스트 없이 private ec2 쉘에 접속할 수 있습니다. aws systems manager는 ec2와 세션을 생성하고 클라이언트는 https를 이용하여 세션에 접근할 수 있습니다.
4. 사전설정
물론, 바로 사용할 수 없고 사전설정이 필요합니다.
- Systems manager agent설치
- Ec2에 Iam role설정(policy는 AmazonSSMManagedInstanceCore)
5. 실습
5.1 구조
agent를 자동으로 다운로드 받기 Nat gateway가 필요합니다.
실습단계에서는 비용을 절약하기 위해 public subnet을 ec2를 실행합니다.
5.2 IAM Role설정
IAM Role을 생성합니다. Role은 AmazonSSMManagedInstanceCore policy를 사용해야 합니다.
5.3 EC2 생성
EC2는 아래 설정으로 생성합니다.
- subnet: public subnet
- 사양: nano
- 운영체제: ubuntu 20
- ssh키 페어: 사용안함
- IAM: 5.1에 생성한 IAM role
5.4 https로 EC2 원격 쉘 접속
agent는 EC2부팅시에 설치됩니다. 그러므로 status check가 passed가 표시되야 agent가 설치됩니다.
EC2를 선택하고 우측상단에 있는 Connect버튼을 클릭합니다.
Session Manger탭을 클릭하고 Connect버튼을 클릭합니다.
새로운 웹브라우즈 탭이 열리고 ec2에 원격쉘이 보입니다.
참고자료
[1] aws 공식문서: https://aws.amazon.com/ko/getting-started/hands-on/remotely-run-commands-ec2-instance-systems-manager/
[2] https://musma.github.io/2019/11/29/about-aws-ssm.html
[3] https://youtu.be/2Xb2JXV5Llo
이하여백
'전공영역 공부 기록' 카테고리의 다른 글
reactjs 또는 vuejs를 nginx와 연동할 때 자주 실수하는 포인트 (0) | 2022.04.25 |
---|---|
jenkins pipeline sh 명령어 공백 제거 (0) | 2022.04.24 |
AWS profile 관리 (0) | 2022.04.24 |
docker로 postgresql 실행 (0) | 2022.04.19 |
kustomize설치 (0) | 2022.04.06 |