putty & ssh 터널링을 이용해서 DB 연결 해보자(외부서버,내부서버)
회사생활을 좀더 쉽게하기 위해 나만의 설정법을 적어둡니다.
어디까지나 참고용으로 사용하시길 바랍니다.
· 구성환경
로컬 컴퓨터 : 윈도우10
서버1 : centOS
서버2 : centOS
· 필요 유틸
Putty
· 전반적인 환경
· 터널링을 하는이유
그림1 환경은 DB서버의 3306포트를 접근하기 위해서는 오직 일반서버에서 접근 할 수 밖에 없다.
사용자컴퓨터에서 다이렉트로 DB서버를 접근 할 수 없다.
할수 있는 방법은 일번서버를 원격접속하고, 일반서버에서 또 DB서버를 원격접속하여 DB를 접근 할 수 밖에 없다.
이렇게 고생하는 이유는 고객이 DB서버에서 포트를 열어주지 않는것이다.
회사생활하면서 고객이 포트를 열어주지 않는 경우는 비일비재하다.
개발을 하기 위해 sql툴을 사용해야 되는데 여간 연결하기 힘들다.
그래서 putty의 기능 중 터널링기술과 ssh를 사용하여 sql툴 연결해보자
(p.s. 야근을 하는중에 글 작성한다.....그림이 개판이더라도 이해바란다.)
(p.s2. 야근이 아니더라도 그림 못그린다. 나도 잘그리고 싶다)
· 이론
▶ 그림1에서 ①구간
putty를 이용해서 사용자컴퓨터와 일반서버사이의 터널링을 구축한다.
▶ 그림1에서 ②구간
ssh를 이용해서 일반서버와 DB서버사이의 터널링을 구축한다.
· 실전
▶ 그림1에서 ①구간 구축
1.putty session 설정
host 주소를 일반서버주소
포트는 22번 포트(ssh) 설정
2. putty ssh - tunnel 설정
ssh-tunnels 메뉴로 이동 후
다음 값을 입력한다.
입력을 다하면 Add를 누른다.
그러면 다음 그림과 같이 한줄이 추가된다.
Source port : 2000
Destination : 127.0.0.1:3000
3. Open을 눌러 일반서버 연결
▶ 그림1에서 2구간
1. ssh 명령어 입력
ssh -L 3000:192.168.0.20:3306 root@192.168.0.20
(ssh -L 일반서버(local)포트:DBIP:db포트 root@DBIP)
2. 연결 완료
3. 포트확인, 일반서버를 실행후(db서버아님) 명령어로 포트확인
netstat -nap | grep 3000
· sql 툴 연결 확인
server host는 localhost로 적어야 된다. (이유는 대충 알것 같지만 확실치 않아 아시는분 댓글 부탁드려요)