0
我嘗試通過ssh隧道創建到遠程服務器的連接。在我的嘗試中,我使用了jsch和putty。DataSource的getConnection()忽略端口
int sshPort = 22;
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("sshUser", "sshHost", sshPort);
session.setPassword(sshPassword);
session.setConfig(config);
session.connect();
session.setPortForwardingL(8806, "127.0.0.1", 3306);
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
//I can type here any value of port, does not matter connection will be created on port 3306
basicDataSource.setUrl("jdbc:mysql://localhost:8806/db");
basicDataSource.setUsername("user");
basicDataSource.setPassword("password");
}
從這個代碼,我期待着某些sshHost:22
將在localhost:8806
可用。
但我得到了connection = dataSource.getConnection();
而不是connection = dataSource.getConnection();
總是連接到數據庫上localhost:3306
。
正如我剛纔所說,我也嘗試通過膩子連接 - 結果是相同的,通過代碼連接忽略端口。
P.S.當我在IDEA的數據庫工具連接到'localhost:8806'時,Putty的隧道纔有效。
P.P.S.感謝@Cool建議現在我可以從代碼中建立隧道。但dataSource繼續忽略端口。
哦,我明白了我的錯誤代碼,但現在不能嘗試。 膩子隧道有什麼問題? –
它應該是L8806 sshHost:3306不是本地主機 – cool
非常感謝,希望它會幫助我 –