본문 바로가기
IT/Spring

SSH 연결하기

by 봉즙 2020. 7. 27.

DB에 연결하는데 SSH가 설정되어있는 경우 다음과 같이 연결을 해준다.

 

jsch를 설치 해준다.

		<dependency>
			<groupId>com.jcraft</groupId>
			<artifactId>jsch</artifactId>
			<version>0.1.55</version>
		</dependency>

 

이후 두개의 클래스를 만든다.

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class SSHConnector {
    private final static String remoteHost = "192.168.0.1";
    private final static String user = "admin";
    private final static String password = "admin";
    private final static int port = 22;
    private Session session;

    public void closeSSH() {
        session.disconnect();
    }

    public SSHConnector() {
        try {
            JSch jSch = new JSch();
            session = jSch.getSession(user, remoteHost, port);
            session.setPassword(password);
            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.connect();
            session.setPortForwardingL(port, remoteHost, 1521);
            System.out.println(" session.connect();");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

//어노테이션 사용시
//@WebListener
public class SSHContextListener implements ServletContextListener {
    private SSHConnector sshConnector;

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("init start!");
        try {
            sshConnector = new SSHConnector();
            System.out.println("init destory!");
        }catch(Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("init destory!");
        sshConnector.closeSSH();
    }
}

 

SSHContextListener에 @WebListener를 사용하면 tomcat에게 Listener클래스임을 알려주어 SSH가 동작하게 된다.

버전이 낮아 사용하지 못하는 경우

web.xml에서

<listener>
   <listener-class>com.septem.exlive.utils.SSHContextListener</listener-class>
</listener>

를 추가해주면 된다.

'IT > Spring' 카테고리의 다른 글

2021-01-06-JPA-모델마다-다른-스키마-사용  (0) 2023.02.27
2021-01-06-bean-thread-safe  (0) 2023.02.27
토비 스프링 - AOP, 트랜잭션 용어  (0) 2019.11.07
토비 스프링 - AOP  (0) 2019.11.04
토비 스트링 - 트랜잭션  (0) 2019.11.01

댓글