公司的开发环境已经日式衰微,再加上测试人员测试都在测试环境上,但是测试环境的数据库需要通过ssh隧道才能连接上,于是研究了一波,才有了下文。
首先给出结果:使用 com.jcraft.jsch 提供的ssh转发功能实现:使用servlet监听器在web项目启动时连接到ssh服务器,在初始化dataSource时将数据库连接请求转发到目标数据库,后续所有对数据库的操作都通过转发实现对目标数据库的操作。
过程如图所示:如有问题请指出,感谢。
贴出具体代码:
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
public class SshConnection {
//目标ssh服务器
String username = "xxxx";
String password = "xxxx";
String host = "xxxx";
int port = 22;
//本地监听端口
int local_port = 3307;
//远程数据库地