Bastion + SSH 에이전트 포워딩을 통한 접속
Bastion,SSH,에이전트,포워딩,접속
🛡️ Bastion 서버란?
Bastion 서버는 외부에서 내부 네트워크로의 접속을 중계해주는 보안 게이트웨이 서버입니다. 일반적으로 아래와 같은 목적에 사용됩니다:
- 프라이빗 네트워크 내부에 있는 서버(예: EC2)에 직접 접근하지 않고, Bastion을 거쳐서만 접속 가능하게 함
- 외부로부터의 직접 접속을 막고, 접근을 중앙 통제
- 보안성을 높이고 접근 로그를 추적 가능하게 함
이 문서에서는 Bastion 서버를 Docker 컨테이너로 구성하고, 클라이언트에서 SSH 에이전트 포워딩을 사용하여 EC2 컨테이너에 접속하는 실습 환경을 다룹니다.
작업 세팅 환경은 다음에 링크에서 받을수 있다
git clone https://github.com/rinechran/bastion-lab.git
# 예비 git
git clone https://git.kudryavka.me/blog/bastion-lab.git
📦 시스템 구성도
[로컬 클라이언트 (Windows)]
- bastion_key.pem
- ec2_key.pem (ssh-agent에 등록)
↓ SSH -A (에이전트 포워딩)
[Bastion (Docker 컨테이너)]
- ec2_key.pem 없음
- 클라이언트 ssh-agent를 통해 서명 요청
↓ SSH
[EC2 (Docker 컨테이너)]
- authorized_keys에 ec2_key.pem.pub 등록됨
✅ 파일 구성
bastion-ec2-lab/
├── docker-compose.yml
├── keys/
│ ├── bastion_key.pem # Bastion 접속용 개인 키
│ └── ec2_key.pem # ssh-agent에 등록할 EC2 키
├── bastion/
│ ├── Dockerfile
│ ├── sshd_config
│ ├── entrypoint.sh
│ └── authorized_keys # bastion_key.pem.pub 삽입
└── server/
├── Dockerfile
├── sshd_config
├── entrypoint.sh
└── authorized_keys # ec2_key.pem.pub 삽입
🔧 1단계: ssh-agent 실행 & EC2 키 등록
PowerShell (관리자 권한) 실행 후 아래 입력:
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent
ssh-add .\keys\ec2_key.pem
등록이 성공하면 ssh-add -l
명령어로 확인 가능
🚀 2단계: Docker 컨테이너 실행
docker-compose up -d --build
🔐 3단계: Bastion 접속 (에이전트 포워딩 포함)
ssh -A -i keys/bastion_key.pem root@localhost -p 2222
-A
옵션으로 ssh-agent 포워딩 활성화됨
📡 4단계: Bastion 내부에서 EC2 접속
ssh root@ec2
EC2 컨테이너는 hostname: ec2
로 설정되어 있어야 함
가끔 베스천서버는 어떻게 구성해야하는지 물어보는 사람이 많아 해당글을 작성하였다.