728x90
SSH 터널링
SSH(Secure Shell) 프로토콜을 사용하여 네트워크 상의 다른 컴퓨터와 안전하게 통신할 수 있는 방법이다.
주로 두 가지의 유형이 있는데
1. 로컬 포트 포워딩
2. 리모트 포트 포워딩
현재 글에서는 로컬 포트 포워딩으로 진행될 것이다.
서버는 EC2의 서버가 될 것이고, 데이터베이스는 RDS가 될 것이다.
서버는 Ubuntu를 사용 중이다.
설치
1) 라이브러리 설치
pip install sshtunnel
2) 라이브러리 import
from sshtunnel import SSHTunnelForwarder
3) Setting.py의 Database섹터에 SSH 터널 설정
server = SSHTunnelForwarder(
(Environ.SSH_TUNNEL_HOST, Environ.SSH_TUNNEL_PORT),
ssh_username=Environ.SSH_TUNNEL_USERNAME,
ssh_pkey=Environ.SSH_TUNNEL_PKEY,
remote_bind_address=(Environ.RDS_HOST, Environ.RDS_PORT)
)
SSH_TUNNEL_HOST: EC2 퍼블릭 주소(탄력적 IP를 받아서 기입했다.)
SSH_TUNNEL_PORT: EC2 서버 포트
SSH_TUNNEL_USERNAME: EC2 서버의 이름
SSH_TUNNEL_PKEY: EC2를 생성할 때 받았 던 .pem 파일의 경로
remote_bind_address: RDS의 엔드포인트와 포트
4) SSH 터널 시작
server.start()
5) 데이터베이스 설정
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': Environ.RDS_DB_NAME,
'USER': Environ.RDS_USERNAME,
'PASSWORD': Environ.RDS_PASSWORD,
'HOST': '127.0.0.1',
'PORT': server.local_bind_port,
}
}
RDS_DB_NAME: 기본 스키마 이름
RDS_USERNAME: RDS를 만들 때 생성한 어드민 이름
RDS_PASSWORD: RDS를 만들 때 생성한 어드민 패스워드
HOST: 로컬 주소
PORT: 로컬 포트로 터널링 된 포트 사용
728x90
SMALL
'Develop > Django' 카테고리의 다른 글
Django 프로젝트를 위한 Docker 환경 구성 가이드 (0) | 2023.04.16 |
---|---|
Django (페이징 뷰) 검색 페이지 기능 구현하기 (0) | 2023.03.24 |
Django View에서 HTML 태그 넣어보기 - 8 (0) | 2023.02.27 |
Django URL reverse / URL name - 7 (0) | 2023.02.27 |
Django 리다이렉트(Redirect) - 6 (0) | 2023.02.26 |