AWS VPC(Virtual Private Cloud) 구조
로컬 PC
│
│ (SSH + pem key)
▼
Public Subnet
EC2 (Bastion Host)
│
│ (VPC 내부 통신)
▼
Private Subnet
Database Server (EC2)Bastion Host
외부에서 내부망에 접근하기 위한 중간 게이트웨이 서버 Private Subnet에 있는 RDS나 내부 서버는 외부 인터넷에서 직접 접근할 수 없기 때문에 Public Subnet에 있는 Bastion Host를 통해 SSH 터널링으로 접속한다.
SSH (Secure Shell)
내 컴퓨터에서 멀리 있는 서버에, 안전하게 로그인하고 통신하게 해주는 기술
- 원격 로그인
- 로컬 PC에서 AWS EC2같은 서버에 접속
- 명령 실행
- 접속 후 서버에서 명령어 실행
- 파일 전송
- scp, sftp - 파일을 서버에 올리거나 내려받을 수 있음
- 터널링 / 포트 포워딩
- 로컬에서 직접 접속하지 못하는 내부망 DB를 SSH 서버를 중간다리로 써서 접속
SSH 터널링
ssh -i mykey.pem -L 3306:rds-endpoint:3306 ec2-user@bastion-ip-L [로컬포트]:[접속할서버]:[서버포트]
예)
localhost:3306 → bastion → RDS:3306
암호화 + 공개키 인증
-
통신 내용 암호화
-
사용자 인증
-
공개키(Public key)/개인키(Private key) 방식
-
서버에 공개키 등록
-
내 컴퓨터에 개인키 보관
-
접속할 때 서버가 키 확인
-
맞으면 로그인 허용
- EC2 생성시 Key Pair를 만들고 다운로드하는 .pem 파일이 개인키
-

EC2 생성 시 Key Pair (.pem)
aws에서 EC2 생성 시 Key Pair를 만든다. 이때 만들어지는 구조는 SSH 공개키 인증 구조다.
Key Pair 생성
AWS 서버(EC2) 내 컴퓨터
----------- -----------
Public Key ←→ Private Key (.pem)
~/.ssh/authorized_keys mykey.pem키 생성시 AWS가 다운로드하게 해주는 mykey.pem 파일이 Private Key(개인키)
.pem = SSH 개인키 파일
직접 SSH 키 생성하기 (ssh-keygen)
- 웹 콘솔 접속
- 명령어 입력
ssh-keygen- 서버 내 파일 생성
- ~/.ssh/id_rsa (개인키)
- ~/.ssh/id_rsa.pub (공개키)
- public key를 ~/.ssh/authorized_keys에 넣어야 로그인 가능
cat id_rsa.pub >> ~/.ssh/authorized_keys - 개인키 다운로드 (복사)