我正在尝试通过 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
我知道你正在做什么,但没有使用 jcraft jsch 库。我能够在单独的线程上从 java 应用程序内部执行终端命令。这是终端命令:
ssh -i /path/to/pem/ -L -N localport:remotehost:remoteport [email protected] /cdn-cgi/l/email-protection
然后在你的java jdbc适配器代码中连接127.0.0.1
与上面的本地端口:
jdbc.mysql://127.0.0.1:1345/databasename/user=user&password=pass
我认为的问题是命令中的 -N 选项仅创建一个隧道,但无法通过隧道执行远程命令,这在 jcraft 的 jsch 库中默认为 true,并且我无法将默认值设置为 false 以执行远程命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)