在项目中,如果要连接到在启用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