SSH 서버 연결 4가지 방식
분류 | SSH 연결 | EC2 인스턴스 연결 | Session Manager | EC2 직접 연결 콘솔 |
인증방법 | 키 페어 | IAM | IAM | IAM/Password |
검사방법 | 검사 불가능 | 연결 기록 Only | 연결기록/세션로그 | 연결 기록 Only |
요구사항 | 인터넷 연결 | 인터넷 연결
Agent 설치 | Agent 설치 | 지원하는 인스턴스 타입 루트 퍼스워드 세팅.
계정에서 활성화 필요 |
목적 | SSH 통신 | SSH 통신 | SSH 통신 | 부팅/네트워크 문제 해결 |
비고 | 키 관리 필요 | SCP로 파일 전송 | 패스워드 관리 필요 |
Session Manager 방식 최종 선정
Session Manager
완전 관리형 AWS 서비스로 EC2를 브라우저 기반의 쉘 혹은 AWS CLI로 관리할 수 있는 서비스
•
동작 방식
◦
AWS API를 기반으로 EC2와 통신
•
연결 인증 방식
◦
IAM 인증
•
검사 방법
◦
연결 기록 및 세션 사용 기록을 CloudTrail/CloudWatch과 연동해 확인 가능
•
연결 요구사항
◦
SSM 에이전트 설치
•
주요 기능
◦
기본적인 SSH 터미널 + SCP 터널(파일 전송)
◦
기타 EC2에 명령 전송(예: Lambda에서 EC2로 명령 전송 등)
•
인스턴스에 대해 원클릭 액세스를 제공하는 관리형 서비스
•
인스턴스에 SSH 연결 없이, 포털을 열 필요 없이, 배스천 호스트를 유지할 필요 없이 인스턴스에 로그인 가능
•
웹브라우저 기반으로 OS와 무관하게 사용 가능
•
로깅과 감사
◦
언제 어디서 누가 명령했는지 확인 가능(CloudTrail)
◦
전송 기록과 사용한 모든 커맨드 및 출력된 내용을 S3 혹은 CloudWatch로 전송 가능
S3 이벤트가 발생하면 Lambda 함수를 통해 EC2 인스턴스에서 특정 실행 파일을 실행하는 절차는 다음과 같다.
1.
IAM 역할 생성
AWS Management Console의 IAM 섹션에서 새 IAM 역할을 생성한다. 이 역할은 Lambda 함수가 EC2 인스턴스를 관리하는 데 필요한 권한을 부여하는 데 사용된다. ‘AmazonEC2FullAccess' 정책을 연결해야 한다.
2.
Lambda 함수 생성
AWS Management Console의 Lambda 섹션에서 새 Lambda 함수를 생성한다. 함수를 생성할 때 앞서 만든 IAM 역할을 선택한다.
Lambda 함수의 코드에는 EC2 인스턴스에서 원하는 실행 파일을 실행하는 SSH 명령을 포함해야 한다. Python 등의 언어를 사용하여 SSH 라이브러리를 활용한 코드를 작성할 수 있다.
3.
S3 버킷에 이벤트 알림 구성
S3 버킷에서 이벤트가 발생할 때 Lambda 함수를 호출하도록 구성한다. AWS Management Console의 S3 섹션에서 해당 버킷의 'Properties' 탭으로 이동해 'Event Notifications' 섹션에 새 이벤트 알림을 추가한다. 이 알림에서 'Lambda Function'을 선택하고 생성한 Lambda 함수를 지정한다. 'Event type'은 필요에 따라 원하는 S3 이벤트 유형을 선택한다 (예: 'All object create events').
이 절차를 완료하면 S3 버킷에서 설정한 이벤트가 발생할 때마다 Lambda 함수가 실행되어 EC2 인스턴스에서 지정된 실행 파일을 실행한다.