Java程序:使用JSch和JDBC通过SSH连接到MySQL

在项目中,如果要连接到在启用SSH的服务器上设置的远程数据库。 由于它是在支持SSH的服务器上,我们无法使用JDBC连接API直接连接它。 为此,首先需要创建SSH会话,然后使用端口转发,将请求转发到服务器并连接到数据库。使用JSch端口转发实现了这一点,然后连接到数据库

这是端口转发和连接到远程数据库而编写的程序。


package com.jb51.cc.java.ssh

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.sqlException;

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.sql.Connection;


public class MysqLConnOveRSSH {

    /**
     * Java Program to connect to remote database through SSH using port forwarding
     * @author admin@jb51.cc.com
     * @throws sqlException 
     */
    public static void main(String[] args) throws sqlException {

        int lport=5656;
        String rhost=secure.xxxxx.com;
        String host=secure.xxxxx.com;
        int rport=3306;
        String user=sshuser;
        String password=sshpassword;
        String dbuserName = MysqL;
        String dbpassword = MysqL123;
        String url = jdbc:MysqL://localhost:+lport+/mydb;
        String driverName=com.MysqL.jdbc.Driver;
        Connection conn = null;
        Session session= null;
        try{
            //Set StrictHostKeyChecking property to no to avoid UnkNownHostKey issue
            java.util.Properties config = new java.util.Properties(); 
            config.put(StrictHostKeyChecking, no);
            JSch jsch = new JSch();
            session=jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.setConfig(config);
            session.connect();
            System.out.println(Connected);
            int assinged_port=session.setPortForwardingL(lport, rhost, rport);
            System.out.println(localhost:+assinged_port+ -> +rhost+:+rport);
            System.out.println(Port Forwarded);

            //MysqL database connectivity
            Class.forName(driverName).newInstance();
            conn = DriverManager.getConnection (url, dbuserName, dbpassword);
            System.out.println (Database connection established);
            System.out.println(DONE);
        }catch(Exception e){
            e.printstacktrace();
        }finally{
            if(conn != null && !conn.isClosed()){
                System.out.println(Closing Database Connection);
                conn.close();
            }
            if(session !=null && session.isConnected()){
                System.out.println(Closing SSH Connection);
                session.disconnect();
            }
        }
    }

}

上述程序的输出是:


Connected
localhost:5656 -> secure.journaldev.com:3306
Port Forwarded
Database connection established
DONE
Closing Database Connection
Closing SSH Connection

在这里,连接到MysqL数据库,但可以使用此方法连接到任何其他数据库或企业信息系统。

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...