在项目中,如果要连接到在启用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数据库,但可以使用此方法连接到任何其他数据库或企业信息系统。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。