jdbc mysql ssh通道_SpringBoot 通过 SSH 通道连接远程 MySQL 数据库

1、添加 Maven 依赖

com.jcraft

jsch

0.1.55

2、创建 SSH 连接工具类import com.jcraft.jsch.JSch;

import com.jcraft.jsch.Session;

public class SshConnection {

//跳板机

String username = "username";

String password = "password";

String host = "host";

int port = 22;

//本地端口

int local_port = 3307;

String remote_host = "192.168.5.56";

int remote_port = 3306;

Session session;

/**

* 建立SSH连接

*/

public void init() {

try {

JSch jsch = new JSch();

session = jsch.getSession(username, host, port);

session.setPassword(password);

session.setConfig("StrictHostKeyChecking", "no");

session.connect();

session.setPortForwardingL(local_port, remote_host, remote_port);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 断开SSH连接

*/

public void destroy() {

this.session.disconnect();

}

}

3、管理 SSH 连接import org.springframework.stereotype.Component;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.annotation.WebListener;

@WebListener

@Component

public class SshContextListener implements ServletContextListener {

private SshConnection sshConnection;

@Override

public void contextInitialized(ServletContextEvent arg0) {

System.out.println("==========>Context initialized...");

try {

sshConnection = new SshConnection();

sshConnection.init();

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

public void contextDestroyed(ServletContextEvent arg0) {

System.out.println("==========>Context destroyed...");

try {

sshConnection.destroy();

} catch (Exception e) {

e.printStackTrace();

}

}

}

4、配置 application.propertiesspring.datasource.url=jdbc:mysql://127.0.0.1:3307/test?characterEncoding=utf8

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

注意:

数据库连接地址由 192.168.5.56:3306 改为 127.0.0.1:3307 ,SSH 连接会把 127.0.0.1:3307 上的操作转发到 192.168.5.56:3306

5、原理

2a1b7b12d8389fed4fe3da6c6c7a39a1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值