postgres via ssh Tunnel?

Mifro

Mitglied
Hallo,

ich muss auf eine Postgres - Datenbank via jdbc über einen ssh Tunnel zugreifen.
Hat das schon mal jemand gemacht?

Vielleicht hat jemand einen Tip, oder kennt einen Link, wo das Verfahren beschrieben ist :D

vielen Dank schonmal. :applaus:
 

faetzminator

Gesperrter Benutzer
Was ist dir unklar? Der Tunnel muss einfach auf den Zielhost und -port zeigen. JDBC muss dann auf den Host und Port zeigen, von welchem aus die Connection aufgebaut wurde (ausser es ist natürlich ein Reverse Tunnel).
 

Mifro

Mitglied
Was ist dir unklar? Der Tunnel muss einfach auf den Zielhost und -port zeigen. JDBC muss dann auf den Host und Port zeigen, von welchem aus die Connection aufgebaut wurde (ausser es ist natürlich ein Reverse Tunnel).

Mit ist nicht ganz klar, wie ich den Tunnel bei der Anmeldung kenntlich machen kann.
Java:
String url = "jdbc:postgresql://serverxx.de/Datenbank";
wäre der normale Connection String (evtl. noch mit Port).
Wenn ich über einen Tunnel gehe, kann ich aber nur über localhost auf die DB zugreifen.
 

faetzminator

Gesperrter Benutzer
Von welchem Host zu welchem machst du ein Tunnel? Von localhost zu irgendwas.de? Dann musst du natürlich statt [c]postgresql://serverxx.de[/c] einfach auf [c]postgresql://localhost[/c] verbinden.
 

Mifro

Mitglied
Von welchem Host zu welchem machst du ein Tunnel? Von localhost zu irgendwas.de? Dann musst du natürlich statt [c]postgresql://serverxx.de[/c] einfach auf [c]postgresql://localhost[/c] verbinden.

Ich habe einen Fat-Client auf irgendeiner Maschine. Die DB läuft auf einem externen Server.
Sagen wir mal Client 192.168.xxx und DB auf 81.xxx...
Da die DB nicht von außen zu erreichen sein darf. Kann ich von dem Client nur über einen Tunnel auf den 81iger Host zugreifen, dann mit localhost auf den Port der postgres DB verbinden.
Ich brauche also einmal den den Tunnelzugang in der Klasse, und dann den Zugang zur DB.

VPN geht nicht, da alle Clients über nicht bekannte IPs laufen, und das zu Konflikten führen kann.

Das müßte eigentlich alles über eine Klasse geregelt werden können. Nur hab ich darüber bisher nichts griffiges gefunden :eek:
 

HoaX

Top Contributor
Ohne SSH gibts auch keinen SSH-Tunnel. Oder was meinst du wo das "SSH" in "SSH-Tunnel" her kommt?!

Was hat VPN an unbekannten IPs auszusetzen? Solange der Server bekannt ist, ist es Wurst was für IPs die Clients haben, die bekommen innerhalb des VPNs einfach eine neue zugewiesen und fertig. OpenVPN kann das z.B.
 

Mifro

Mitglied
Java:
// SSH Tunnel
Session session = null;
try {
  final JSch jsch = new JSch();
  session = jsch.getSession(ssh_user, ssh_server, 22);

  final Hashtable config = new Hashtable();
  config.put("StrictHostKeyChecking", "no");
  session.setConfig(config);
  jsch.addIdentity("ssh/id_dsa");

  session.connect();

  int assigned_port = session.setPortForwardingL(lport, rhost, rport);

} catch (Exception e) {
  e.printStackTrace();
  System.exit(-1);
}    

// DB connection
Connection con = null;
try {
  Class.forName("com.mysql.jdbc.Driver");
  con = DriverManager.getConnection("jdbc:mysql://localhost:3366/db_name", "db_user", "db_pass");

  // access  database

} catch (Exception ex) {
  ex.printStackTrace();
  System.exit(-1);
} finally {
  try {
    if (con != null) con.close();
  } catch (Exception ex) {/* NOP */}
}

session.disconnect();
 
Ähnliche Java Themen

Ähnliche Java Themen


Oben