AWS SystemManager의 Session Manager를 이용하여 Private EC2에 SSH 접속하기

2023.12.20

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 AWS System Manager의 Session Manager를 이용하여 Private EC2에 접속하는 방법에 대해 알아보도록 하겠습니다.

AWS System Manager의 Session Manager로 접속하는 장접

  • bastion 서버가 필요가 없습니다.
    • 서버 비용이나 각 EC2마다 키페어를 만들어야 하는 등 관리나 운영면에서 좋습니다.
  • EC2의 보안그룹에 설정이 필요하지 않습니다.
    • SSH 접속등을 허용하는 보안그룹의 인바운드 설정이 필요 없기 때문에 관리나 운영면에서 좋습니다.

준비 사항

  • Private Subnet에 배치되어 있는 EC2에서 System Manager 를 사용하기 위해서는 아래의 방법중 하나의 네트워크 설정을해야 합니다.
    • NatGateway 설정
    • System Manager용 VPC EndPoint 설정
  • EC2인스턴스에 AmazonSSMManagedInstanceCore 권한 설정하기
  • EC2인스턴스 System Manager Agent 설치
  • 온프레미스 환경에 AWS CLI 환경 설정

포트포워딩으로 SSH접속 해보기

SSH Config 설정하기

Mac OS

# SSH over Session Manager
host i-* mi-*
    ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"

Windows OS

# SSH over Session Manager
host i-* mi-*
    ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p"

위의 내용을 ssh의 config 파일에 설정하면 프록시 명령 실행을 허용하여 Session Manager 세션을 시작할 수 있도록 합니다.

접속 해보기

먼저 AWS CLI 환경을 설정해야 하기 때문에 위의 블로그를 확인해 주세요.

ssh -i <키 페어 경로> <사용자 명>@<EC2인스턴스 ID> -v

위의 명령어로 SSH 접속을 합니다.
기존의 명령와는 다르게 EC2인스턴스의 IP주소가 아닌 EC2인스턴스 ID로 접속하기 때문에 꼭 확인해 주시길 바랍니다.
마직막-v는 SSH 접속할 때 로그를 출력하는 옵션으로 필수는 아닙니다.

실제로 접속이 가능한 것을 확인 할 수 있습니다.
로그 출력이 많이 생기는 이유로 위의 화면에서는-v를 사용하지 않았습니다.

마무리

이번 블로그에서 EC2의 Private IP를 지정한 값으로 설정하는 방법에 대해 알아 보았습니다. AWS에서 인프라 환경을 구축하여 운용할때 EC2 인스턴스의 Private IP를 지정하여 사용해야하는 요건을 가지신 분들께 조금이나마 도움이 되었으면 좋겠습니다.

참고자료