配置连接
maven依赖如下
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.53</version>
</dependency>
java代码如下
package com.***.***.***;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.util.Properties;
public class SShConnectUtils {
String user = "user";
// 服务器登录名
String password = "password";
// 登陆密码
String host = "***.**.***.***";
//服务器公网IP
int port = 22;
// 跳板机ssh开放的接口 默认端口 22
int local_port = 3307;
// 这个是本地的端口,很重要!!!选取一个没有占用的port即可
String remote_host = "127.0.0.1";
// 要访问的mysql所在的host 服务器局域网IP(127.0.0.1也行)
int remote_port = 3307;
// 服务器上数据库端口号
Session session = null;
/**
* 建立SSH连接
*/
public void SSHConnection() throws Exception{
try {
JSch jsch = new JSch();
session = jsch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
// 日志打印自己脑补
session.connect();
session.setPortForwardingL(local_port, remote_host, remote_port);
} catch (Exception e) {
// do something
}
}
/**
* 断开SSH连接
*/
public void closeSSH () throws Exception
{
this.session.disconnect();
}
}
监听连接
package com.***.***.***;
import org.springframework.stereotype.Component;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
@Component
public class ConnectListener implements ServletContextListener {
private SShConnectUtils conexionssh;
public ConnectListener() {
super();
}
/**
* @see ServletContextListener#contextInitialized(ServletContextEvent)
*/
@Override
public void contextInitialized(ServletContextEvent arg0) {
// 建立连接
System.out.println("Context initialized ... !\n\n\n");
try {
conexionssh = new SShConnectUtils();
conexionssh.SSHConnection();
System.out.println("\n\n\n成功建立SSH连接!\n\n\n");
} catch (Throwable e) {
System.out.println("\n\n\nSSH连接失败!\n\n\n");
e.printStackTrace(); // error connecting SSH server
}
}
/**
* @see ServletContextListener#contextDestroyed(ServletContextEvent)
*/
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// 断开连接
System.out.println("Context destroyed ... !\n\n\n");
try {
conexionssh.closeSSH(); // disconnect
System.out.println("\n\n\n成功断开SSH连接!\n\n\n");
} catch (Exception e) {
e.printStackTrace();
System.out.println("\n\n\n断开SSH连接出错!\n\n\n");
}
}
}
yml配置
spring:
datasource:
#3307为服务器mysql端口
url: jdbc:mysql://localhost:3307/database_name?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&autoReconnect=true
#服务器mysql用户名密码
username: user
password: password
如果需要连接redis,则添加一行代码配置redis连接参数
remote_port默认为6379,remote_host默认127.0.0.1,local_port选择本地未被占用的端口
session.setPortForwardingL(local_port, remote_host, remote_port);
之后配置yml
redis:
#连接池
jedis:
pool:
#最大连接个数
max-active: 10
#等待时间
max-wait: 6000ms
#最大空闲
max-idle: 8
#初始化最小
min-idle: 5
#操作第几个库
database: 1
#redis路径
host: 127.0.0.1
password: password
port: 6379