Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DATABASE
- pom.xml
- 당근마켓
- Oracle
- PKIX
- SENS API
- ServerTimeZone
- NAVER SMS
- 종로다이아반지
- G1diamond
- Spring
- 스프링 프레임 워크
- WINDOWS10
- SpringMVC
- 윈도우10
- ORA-65096
- 웨딩링
- java
- oracle db
- 웨딩밴드
- 포맷
- cloud outbound mailer
- 종로예물
- NAVER API
- Windows 10
- 지원다이아몬드
- ora-00984
- 허먼밀러
- naver cloud platform
- G1다이아몬드
Archives
- Today
- Total
더 나은 개발자가 되고싶다..
Spring에서 SSH Tunneling 설정하기 본문
프로젝트를 진행하면서 내부망 사용으로 서버에 직접 접근을 못하는 경우가 생겼다.
DB는 SQL Developer, DBeaver등에서 SSH 터널링을 설정해주면 접속이 가능한데
자바에서는 터널링 설정 부분을 코딩해야한다.
간단하게 보면 아래의 코드 참조
import java.util.Properties;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
public class SSHConnection {
private final static String HOST = "DB주소";
private final static Integer PORT = DB포트;
private final static String SSH_USER = "DB계정";
private final static String SSH_PW = "DB비밀번호";
private Session session;
public void closeSSH() {
session.disconnect();
}
public SSHConnection() {
try {
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
session = jsch.getSession(SSH_USER, HOST, PORT);
session.setPassword(SSH_PW);
session.setConfig(config);
session.connect();
session.setPortForwardingL(3306, "오픈되어있는 주소", 오픈포트);
} catch (JSchException e) {
e.printStackTrace();
}
}
}
※ jsch jar파일이 있어야한다.
https://mvnrepository.com/artifact/com.jcraft/jsch에서 다운 가능. pom.xml에 추가해도 된다.
1. final로 선언한 부분에 접속할 DB정보를 입력한다.
2. SSHConnection 매서드 부분에 session.setPortForwardingL()을 설정해주는데
예시코드는 127.0.0.1:3306 번에 오픈되어있는 주소를 포트포워딩 해주는것이다.
3. 이렇게 선언을 한후 아래 코드
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class MyContextListener implements ServletContextListener{
private SSHConnection sshConnection;
@Override
public void contextInitialized(ServletContextEvent sce) {
try {
sshConnection = new SSHConnection();
}catch(Exception e) {
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
sshConnection.closeSSH();
}
}
@WebListener 어노테이션이 붙어있기 때문에 tomcat이 실행 될 때 포트포워딩이 시작된다.
4. 이후 commonconfig.xml 파일에서 DB 정보를 설정
jdbc.url=jdbc:oracle:thin:@localhost:3306:서비스ID
jdbc.username=계정ID
jdbc.password=계정PW
이후 DB정보에는 포트포워딩을 127.0.0.1:3306으로 했기때문에 localhost:3306을 넣어주고 :서비스ID (orcl)을 붙여준다.
실행해보면 잘 된다.
'코딩 > Spring' 카테고리의 다른 글
Non supported character set (add orai18n.jar in your classpath): KO16KSC5601 해결하기 (0) | 2021.01.28 |
---|---|
JNDI 옵션 정리 (0) | 2021.01.21 |
[Spring MVC]02. Spring Project에 TomCat 설치하기 (0) | 2019.05.27 |
[Spring MVC]01. Spring Legacy Project 생성하기 (0) | 2019.05.27 |
Spring Frame Work pom.xml 검색 안될 시 해결법 (0) | 2019.04.22 |