기존 Bastion Server 방식의 한계
private subnet에 위치한 EC2 인스턴스에 접속하기 위해서는 public subnet에 bastion server를 구축한 뒤 SSH를 통해 우회 접속하는 방식을 많이 사용합니다. 하지만 이러한 방법은 아래와 같은 단점이 존재합니다.
- SSH Key 생성 및 관리
- 보안 그룹에서 22번 포트 개방
- bastion 서버 운영 및 유지 비용

이런 문제를 해결하기 위해 저는 AWS에서 제공하는 Systems Manager Session Manager를 사용하여 bastion server 없이도 private EC2 인스턴스에 직접 접속할 수 있었습니다.
AWS Session Manager란
AWS Systems Manager Session Manager는 SSH 키 없이도 EC2 인스턴스에 안전하게 접속할 수 있도록 지원하는 서비스입니다.
사용자는 IAM 권한을 기반으로 Session Manager에 접속하고, Session Manager는 SSM Agent와 통신하여 EC2 인스턴스에 안전한 접속을 제공합니다. 추가적으로, Session Manager 세션 로그는 CloudWatch Logs 또는 Amazon S3로 보낼 수 있습니다.

AWS Session Manager 설정
SSM Agent 설치
Session Manager가 EC2와 통신하기 위해서는 SSM Agent가 설치되어 있어야 합니다. 기본적으로 Amazon Linux 2에는 보통 기본 포함되어 있지만, 설치되지 않은 경우 아래 명령어로 확인 후 직접 설치해주어야 합니다.
# SSM Agent 설치 여부 확인
sudo systemctl status amazon-ssm-agent
# SSM Agent 설치
sudo yum install -y amazon-ssm-agent
# 자동 시작 활성화 및 시작
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent
Amazon Linux가 아닌 운영체제를 사용하는 경우 SSM Agent 가이드 를 참고해주세요.
IAM Role 부여
AWS에서 제공하는 기본 정책인 AmazonSSMManagedInstanceCore 정책을 포함한 IAM Role을 생성합니다.


IAM Role EC2에 적용
새로 EC2를 생성하는 경우에는 생성 과정에서 역할을 선택하면 되지만, 저의 경우에는 이미 실행 중인 EC2 인스턴스에 역할을 부여해야 했기에 콘솔에서 아래와 같은 경로로 역할을 적용했습니다.


Session Manager로 접속 테스트
아래와 같이 System manager의 Fleet Manager 탭에 들어가게 되면 SSM에 등록된 모든 EC2 인스턴스를 확인할 수 있습니다.

이후 세션 관리자 탭에 세션 시작을 누르고 해당 인스턴스를 선택해 시작하면 접속이 가능합니다.



기존에는 bastion server를 거쳐 SSH 키를 생성하고 관리해야 했지만, Session Manager는 이러한 과정 없이 불필요하기에 훨씬 간편했습니다. 또한 키 관리뿐만 아니라 접속 과정 자체도 꽤나 번거롭고 귀찮게 느껴졌는데 Session Manager를 적용하면서 이러한 불편함이 해소되었습니다.
'☁️ Cloud' 카테고리의 다른 글
| ECS Fargate 적용기: Cold Start와 배포 속도 개선 (0) | 2025.12.23 |
|---|---|
| Helm으로 AWS Load Balancer Controller 설치하기 (0) | 2025.12.21 |