java 에서 ssh 이용

ssh를 이용하여 접속해야하는 경우가 있다. jsch 라는 라이브러리를 사용하여 접속한다.

pom.xml

1
2
3
4
5
<dependency>
			<groupId>com.jcraft</groupId>
			<artifactId>jsch</artifactId>
			<version>0.1.55</version>
		</dependency>

web.xml

1
2
3
<listener>
   <listener-class>com.example.ssh.utils.SSHContextListener</listener-class>
</listener>
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
32
package com.example.ssh.utils;

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

public class SSHConnector {
    private final static String remoteHost = "192.168.0.195";
    private final static String user = "fourms";
    private final static String password = "fourms";
    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();
        }
    }
}
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
package com.example.ssh.utils;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

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();
    }
}