java Jsch实现跳板机操作远程数据库

jsch是一个纯java实现的ssh,作用有很多,比如实现一个sftp或者ftp,java执行shell命令等等,今天用做于模拟登陆跳板机然后操作数据库。

首先导入maven依赖,数据库用的是mysql

1<dependency> 2 <groupId>com.jcraft</groupId> 3 <artifactId>jsch</artifactId> 4 <version>0.1.53</version> 5 </dependency> 6 <dependency> 7 <groupId>mysql</groupId> 8 <artifactId>mysql-connector-java</artifactId> 9 <version>5.1.36</version> 10 </dependency>

然后建立一个ssh通道模拟登陆到跳板机

1public class JDBCSSHChannel { 2 /** 3 * 4 * @param localPort 本地host 建议mysql 3306 redis 6379 5 * @param sshHost ssh host 6 * @param sshPort ssh port 7 * @param sshUserName ssh 用户名 8 * @param sshPassWord ssh密码 9 * @param remotoHost 远程机器地址 10 * @param remotoPort 远程机器端口 11 */ 12 public static void goSSH(int localPort, String sshHost, int sshPort, 13 String sshUserName, String sshPassWord, 14 String remotoHost, int remotoPort) { 15 try { 16 JSch jsch = new JSch(); 17 //登陆跳板机 18 Session session = jsch.getSession(sshUserName, sshHost, sshPort); 19 session.setPassword(sshPassWord); 20 session.setConfig("StrictHostKeyChecking", "no"); 21 session.connect(); 22 //通过ssh连接到mysql机器 23 int assinged_port = session.setPortForwardingL(localPort, remotoHost, remotoPort); 24 } catch (Exception e) { 25 e.printStackTrace(); 26 } 27 } 28}

然后连接mysql,在连接mysql前调用下goSSH方法建立跳板机通道即可

1public static Connection connDB() { 2 // 声明Connection对象 3 Connection con = null; 4 // 驱动程序名 5 String driver = "com.mysql.jdbc.Driver"; 6 // URL指向要访问的数据库名mydata 7 String url = "jdbc:mysql://192.168.1.1:3306/TEST"; 8 // MySQL配置时的用户名 9 String user = "root"; 10 // MySQL配置时的密码 11 String password = "123456"; 12 // 遍历查询结果集 13 try { 14 // 加载驱动程序 15 try { 16 Class.forName(driver); 17 } catch (ClassNotFoundException e) { 18 // TODO Auto-generated catch block 19 e.printStackTrace(); 20 } 21 // 1.建立跳板机通道 22 // goSSH(localPort, sshHost, sshPort, sshUserName, sshPassWord, remotoHost, 23 // remotoPort); 24 // 2.getConnection()方法,连接MySQL数据库!! 25 con = DriverManager.getConnection(url, user, password); 26 } catch (SQLException e) { 27 // TODO: handle exception 28 e.printStackTrace(); 29 } 30 return con; 31 }
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''