【发布时间】:2020-02-06 12:31:03
【问题描述】:
我正在尝试通过 SSH 隧道从本地 JAVA 程序连接到 RDS 数据库到 EC2 实例以进行调试。我正在尝试在 EC2 实例中建立 SSH 隧道,然后将端口转发到 RDS 数据库。这是我的代码。
final int localPort = 9999;
// Create BaiscDataSource.
final String databaseURL = "jdbc:mysql://localhost:" + localPort + "/database";
// SSH Tunnel.
final JSch jsch = new JSch();
jsch.addIdentity(sshKeyPath);
this.session = jsch.getSession(ec2Username, ec2Host, 22);
this.session.setTimeout(0);
this.session.setConfig("StrictHostKeyChecking", "no");
this.session.connect();
this.session.setPortForwardingL(localPort, rdsHost, 3306);
请帮忙!
编辑者:looply_dev 2012 年 10 月 2 日下午 4:17
【问题讨论】:
-
您还需要从 Java 设置隧道吗?在你的程序之外设置它,然后将 db URL 指向
localhost:9999不会削减它? -
否则这是我曾经使用过的一个工作示例。 beanizer.org/site/index.php/en/Articles/…你可能想在一个单独的线程中运行它,我不记得它是否阻塞。
-
我实际上都试过了。在这两种情况下,执行查询都会挂起。
-
如果你在java程序之外建立了一个隧道,然后只是简单地telnet到那个端口,你看到mysql吐出数据了吗? IE。你确定你的隧道工作正常吗?
-
是的。确实有效。所以我想这证实了隧道是好的。
标签: java mysql ssh amazon-rds jsch