通过Jumpbox/代理从我的本地机器连接远程MySQL。

huangapple 未分类评论52阅读模式
英文:

Connect to remote MySQL from my local machine through Jumpbox/Proxy

问题

我可以通过跳板机/代理从我的本地机器连接到远程MySQL吗?

我在AWS机器(A)上部署了一个Java应用程序,该应用程序可以访问并连接到远程MySQL服务器(B)。现在,当我需要在本地测试我的Java应用程序时,无法连接到远程MySQL服务器(B)。

因此,基本上我的Java应用程序能否通过AWS机器从本地机器连接到远程服务器。

具体方式如下:
本地机器(Java应用程序)===》AWS机器(A)===》MySQL服务器(B)

AWS机器(A)只能通过SSH连接。:(

隧道技术可以在这里有所帮助。

英文:

Can I connect to remote Mysql via Jumpbox/proxy from my local machine.

I have a java application deployed in AWS machine(A) which has access and can connect to remote Mysql server(B). Now when I need to test my Java application locally I can not connect to Remote Mysql server(B).

So basically can my Java application connect to remote server from my local machine via AWS machine.

This way
Local Machine(java Application) ===> AWS machine(A)==> Mysql Server(B)

AWS Machine(A) can only be connected through SSH. 通过Jumpbox/代理从我的本地机器连接远程MySQL。

Can tunneling help here?

答案1

得分: 0

  1. you can use JSch
  2. http://www.jcraft.com/jsch/
  3. an example of how to use it
  4. package com.journaldev.java.ssh
  5. import java.sql.DriverManager;
  6. import java.sql.PreparedStatement;
  7. import java.sql.ResultSet;
  8. import java.sql.SQLException;
  9. import com.jcraft.jsch.JSch;
  10. import com.jcraft.jsch.Session;
  11. import java.sql.Connection;
  12. public class MySqlConnOverSSH {
  13. /**
  14. * Java Program to connect to the remote database through SSH using port forwarding
  15. * author Pankaj@JournalDev
  16. * throws SQLException
  17. */
  18. public static void main(String[] args) throws SQLException {
  19. int lport=5656;
  20. String rhost="secure.journaldev.com";
  21. String host="secure.journaldev.com";
  22. int rport=3306;
  23. String user="sshuser";
  24. String password="sshpassword";
  25. String dbuserName = "mysql";
  26. String dbpassword = "mysql123";
  27. String url = "jdbc:mysql://localhost:"+lport+"/mydb";
  28. String driverName="com.mysql.jdbc.Driver";
  29. Connection conn = null;
  30. Session session= null;
  31. try{
  32. //Set StrictHostKeyChecking property to no to avoid UnknownHostKey issue
  33. java.util.Properties config = new java.util.Properties();
  34. config.put("StrictHostKeyChecking", "no");
  35. JSch jsch = new JSch();
  36. session=jsch.getSession(user, host, 22);
  37. session.setPassword(password);
  38. session.setConfig(config);
  39. session.connect();
  40. System.out.println("Connected");
  41. int assinged_port=session.setPortForwardingL(lport, rhost, rport);
  42. System.out.println("localhost:"+assinged_port+" -> "+rhost+":"+rport);
  43. System.out.println("Port Forwarded");
  44. //mysql database connectivity
  45. Class.forName(driverName).newInstance();
  46. conn = DriverManager.getConnection (url, dbuserName, dbpassword);
  47. System.out.println ("Database connection established");
  48. System.out.println("DONE");
  49. }catch(Exception e){
  50. e.printStackTrace();
  51. }finally{
  52. if(conn != null && !conn.isClosed()){
  53. System.out.println("Closing Database Connection");
  54. conn.close();
  55. }
  56. if(session !=null && session.isConnected()){
  57. System.out.println("Closing SSH Connection");
  58. session.disconnect();
  59. }
  60. }
  61. }
  62. }
  63. Reference:
  64. https://www.journaldev.com/235/java-mysql-ssh-jsch-jdbc
英文:

you can use JSch

http://www.jcraft.com/jsch/

an example of how to use it

  1. package com.journaldev.java.ssh
  2. import java.sql.DriverManager;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import com.jcraft.jsch.JSch;
  7. import com.jcraft.jsch.Session;
  8. import java.sql.Connection;
  9. public class MySqlConnOverSSH {
  10. /**
  11. * Java Program to connect to the remote database through SSH using port forwarding
  12. * @author Pankaj@JournalDev
  13. * @throws SQLException
  14. */
  15. public static void main(String[] args) throws SQLException {
  16. int lport=5656;
  17. String rhost="secure.journaldev.com";
  18. String host="secure.journaldev.com";
  19. int rport=3306;
  20. String user="sshuser";
  21. String password="sshpassword";
  22. String dbuserName = "mysql";
  23. String dbpassword = "mysql123";
  24. String url = "jdbc:mysql://localhost:"+lport+"/mydb";
  25. String driverName="com.mysql.jdbc.Driver";
  26. Connection conn = null;
  27. Session session= null;
  28. try{
  29. //Set StrictHostKeyChecking property to no to avoid UnknownHostKey issue
  30. java.util.Properties config = new java.util.Properties();
  31. config.put("StrictHostKeyChecking", "no");
  32. JSch jsch = new JSch();
  33. session=jsch.getSession(user, host, 22);
  34. session.setPassword(password);
  35. session.setConfig(config);
  36. session.connect();
  37. System.out.println("Connected");
  38. int assinged_port=session.setPortForwardingL(lport, rhost, rport);
  39. System.out.println("localhost:"+assinged_port+" -> "+rhost+":"+rport);
  40. System.out.println("Port Forwarded");
  41. //mysql database connectivity
  42. Class.forName(driverName).newInstance();
  43. conn = DriverManager.getConnection (url, dbuserName, dbpassword);
  44. System.out.println ("Database connection established");
  45. System.out.println("DONE");
  46. }catch(Exception e){
  47. e.printStackTrace();
  48. }finally{
  49. if(conn != null && !conn.isClosed()){
  50. System.out.println("Closing Database Connection");
  51. conn.close();
  52. }
  53. if(session !=null && session.isConnected()){
  54. System.out.println("Closing SSH Connection");
  55. session.disconnect();
  56. }
  57. }
  58. }
  59. }

Reference:
https://www.journaldev.com/235/java-mysql-ssh-jsch-jdbc

huangapple
  • 本文由 发表于 2020年7月24日 20:43:32
  • 转载请务必保留本文链接:https://java.coder-hub.com/63073824.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定