java Jsch實現跳板機操作遠端資料庫
阿新 • • 發佈:2019-01-30
jsch是一個純java實現的ssh,作用有很多,比如實現一個sftp或者ftp,java執行shell命令等等,今天用做於模擬登陸跳板機然後操作資料庫。
首先匯入maven依賴,資料庫用的是mysql
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.53</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.36</version> </dependency>
然後建立一個ssh通道模擬登陸到跳板機
public class JDBCSSHChannel { /** * * @param localPort 本地host 建議mysql 3306 redis 6379 * @param sshHost ssh host * @param sshPort ssh port * @param sshUserName ssh 使用者名稱 * @param sshPassWord ssh密碼 * @param remotoHost 遠端機器地址 * @param remotoPort 遠端機器埠 */ public static void goSSH(int localPort, String sshHost, int sshPort, String sshUserName, String sshPassWord, String remotoHost, int remotoPort) { try { JSch jsch = new JSch(); //登陸跳板機 Session session = jsch.getSession(sshUserName, sshHost, sshPort); session.setPassword(sshPassWord); session.setConfig("StrictHostKeyChecking", "no"); session.connect(); //通過ssh連線到mysql機器 int assinged_port = session.setPortForwardingL(localPort, remotoHost, remotoPort); } catch (Exception e) { e.printStackTrace(); } } }
然後連線mysql,在連線mysql前呼叫下goSSH方法建立跳板機通道即可
public static Connection connDB() { // 宣告Connection物件 Connection con = null; // 驅動程式名 String driver = "com.mysql.jdbc.Driver"; // URL指向要訪問的資料庫名mydata String url = "jdbc:mysql://192.168.1.1:3306/TEST"; // MySQL配置時的使用者名稱 String user = "root"; // MySQL配置時的密碼 String password = "123456"; // 遍歷查詢結果集 try { // 載入驅動程式 try { Class.forName(driver); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 1.建立跳板機通道 // goSSH(localPort, sshHost, sshPort, sshUserName, sshPassWord, remotoHost, // remotoPort); // 2.getConnection()方法,連線MySQL資料庫!! con = DriverManager.getConnection(url, user, password); } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } return con; }