{"id":555,"date":"2011-03-05T12:06:00","date_gmt":"2011-03-05T10:06:00","guid":{"rendered":"https:\/\/bob-team.de\/wordpress\/?p=555"},"modified":"2021-05-22T21:12:48","modified_gmt":"2021-05-22T19:12:48","slug":"datenbank-uber-ssh-tunneln","status":"publish","type":"post","link":"https:\/\/bob-team.de\/wordpress\/2011\/03\/05\/datenbank-uber-ssh-tunneln\/","title":{"rendered":"Datenbank durch SSH tunneln"},"content":{"rendered":"<p>Mit der Java-Bibliothek <a href=\"http:\/\/www.jcraft.com\/jsch\/\">JSch<\/a> ist es sehr leicht m\u00f6glich, eine Datenbankverbindung per SSH abzusichern. Das folgende Beispiel demonstriert die Verbindung zu einer MySQL-Datenbank <a href=\"http:\/\/de.wikipedia.org\/wiki\/Portweiterleitung\">per Portweiterleitung<\/a>.<\/p>\n<p><!--more--><\/p>\n<pre lang=\"java\">\r\npackage com.journaldev.java.ssh\r\n \r\nimport java.sql.DriverManager;\r\nimport java.sql.PreparedStatement;\r\nimport java.sql.ResultSet;\r\nimport java.sql.SQLException;\r\n \r\nimport com.jcraft.jsch.JSch;\r\nimport com.jcraft.jsch.Session;\r\nimport java.sql.Connection;\r\n \r\npublic class MySqlConnOverSSH {\r\n \r\n    \/**\r\n     * Java Program to connect to remote database \r\n     * through SSH using port forwarding\r\n     * @author Pankaj@JournalDev\r\n     * @throws SQLException\r\n     *\/\r\n    public static void main(String[] args) throws SQLException {\r\n \r\n        int lport=5656;\r\n        String rhost=\"secure.journaldev.com\";\r\n        String host=\"secure.journaldev.com\";\r\n        int rport=3306;\r\n        String user=\"sshuser\";\r\n        String password=\"sshpassword\";\r\n        String dbuserName = \"mysql\";\r\n        String dbpassword = \"mysql123\";\r\n        String url = \"jdbc:mysql:\/\/localhost:\"+lport+\"\/mydb\";\r\n        String driverName=\"com.mysql.jdbc.Driver\";\r\n        Connection conn = null;\r\n        Session session= null;\r\n        try{\r\n            \/\/ Set StrictHostKeyChecking property to no \r\n            \/\/ to avoid UnknownHostKey issue\r\n            java.util.Properties config = new java.util.Properties();\r\n            config.put(\"StrictHostKeyChecking\", \"no\");\r\n            JSch jsch = new JSch();\r\n            session=jsch.getSession(user, host, 22);\r\n            session.setPassword(password);\r\n            session.setConfig(config);\r\n            session.connect();\r\n            System.out.println(\"Connected\");\r\n            int assinged_port =\r\n                  session.setPortForwardingL(lport, rhost, rport);\r\n            System.out.println(\"localhost:\"+assinged_port\r\n                  +\" -> \"+rhost+\":\"+rport);\r\n            System.out.println(\"Port Forwarded\");\r\n \r\n            \/\/mysql database connectivity\r\n            Class.forName(driverName).newInstance();\r\n            conn = DriverManager.getConnection (url, \r\n                  dbuserName, dbpassword);\r\n            System.out.println (\"Database connection established\");\r\n            System.out.println(\"DONE\");\r\n        }catch(Exception e){\r\n            e.printStackTrace();\r\n        }finally{\r\n            if(conn != null && !conn.isClosed()){\r\n                System.out.println(\"Closing Database Connection\");\r\n                conn.close();\r\n            }\r\n            if(session !=null && session.isConnected()){\r\n                System.out.println(\"Closing SSH Connection\");\r\n                session.disconnect();\r\n            }\r\n        }\r\n    }\r\n \r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Mit der Java-Bibliothek JSch ist es sehr leicht m\u00f6glich, eine Datenbankverbindung per SSH abzusichern. Das folgende Beispiel demonstriert die Verbindung zu einer MySQL-Datenbank per Portweiterleitung.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,7],"tags":[],"class_list":["post-555","post","type-post","status-publish","format-standard","hentry","category-java","category-netzwerk","entry"],"_links":{"self":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/comments?post=555"}],"version-history":[{"count":9,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/555\/revisions"}],"predecessor-version":[{"id":2644,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/555\/revisions\/2644"}],"wp:attachment":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/media?parent=555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/categories?post=555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/tags?post=555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}