2016-01-12 49 views
5

belirli mysql host ile uzak ana SSH tünel ile MySQL Veritabanına bağlanma aşağıdaki resim:uzak MySQL veritabanına bağlanmak için ben <a href="http://www.jcraft.com/jsch/" rel="noreferrer">Jsch</a> kullanıyorum

private static void connectSSH() throws SQLException { 
    try { 
     java.util.Properties config = new java.util.Properties(); 
     JSch jsch = new JSch(); 
     jsch.setLogger(new MyLogger()); 
     session = jsch.getSession(sshUser, sshHost, 22); 
     jsch.addIdentity(SshKeyFilepath, sshPassword); 
     config.put("StrictHostKeyChecking", "no"); 
     config.put("ConnectionAttempts", "3"); 
     session.setConfig(config); 
     session.connect(); 

     System.out.println("SSH Connected"); 

     Class.forName(driverName).newInstance(); 

     int assinged_port = session.setPortForwardingL(localPort, remoteHost, remotePort); 

     System.out.println("localhost:" + assinged_port + " -> " + sshHost + ":" + remotePort); 
     System.out.println("Port Forwarded"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

ve sonunda aşağıdaki kodu kullanarak veritabanına bağlanırken:

aşağıda enter image description here

ben SSH bağlantısı için kullanıyorum kodudur

Class.forName("com.mysql.jdbc.Driver"); 
     Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:" + localPort, dbUser, dbPassword); 

başarıyla SSH bağlantısı yapmak mümkün ama yürütme takıldığım zaman aşağıda satır: Çift komut satırında bağlayarak benim SSH ve veritabanı kimlik bilgilerini kontrol ettikten

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:" + localPort, dbUser, dbPassword); 

ben am güçlü uzak ana mysql konak localhost ama host1 olmadığını

mysql -h host1 -u "myusername" -p"mypasswordhere" 

sorunun nedeni olabilir varsayalım kullanarak veritabanına bağlanmak için Jdbc url'de nereye yazacağımı bilmediğim
.

yerine:

int assinged_port = session.setPortForwardingL(localPort, remoteHost, remotePort); 

olmalıydı

int assinged_port = session.setPortForwardingL(localPort, localSSHUrl, remotePort); 

bağlantı ince çalışır

+0

Yerel ve uzak makinenizde "asılı" iken netstat yaptınız? güvenlik duvarı/yönlendirme sorunu olabilir – Jan

+0

"yerel" üzerinde asılı iken yerel bağlantı için kullanılan uzak bağlantı noktası – Anirudh

+1

için tünel gibi görünüyor benim bağlantı noktası için bağlantı "ESTABLISHED" diyor. Tünel ettiğin ev sahibi için netstat var mı? – Jan

cevap

2

Eh sorunun kök neden oldu port yönlendirme yanlış bir yol olduğunu şimdi.

+0

Benzer bir sorunum var . Tüm kod snippet'ini gönderir misiniz? – Cafebabe

+0

Merhaba Anirudh. Aynı konuyla da ilgileniyorum. LocalSSHUrl'in ne olduğunu bana bildirir misin? – Vinay

İlgili konular