3

デバッグ目的で、SSH トンネルを介してローカル Java プログラムから EC2 インスタンスに RDS データベースに接続しようとしています。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 日 16:17 に

4

2 に答える 2

1

jcraft jschライブラリを使用していませんが、あなたがしていることはわかりました。別のスレッドで Java アプリケーション内から端末コマンドを実行できました。端末コマンドは次のとおりです。

ssh -i /path/to/pem/ -L -N localport:remotehost:remoteport remoteuser@remotetunnelserver.com

次に、Java jdbc アダプター コード127.0.0.1で、上記の localport に接続します。

jdbc.mysql://127.0.0.1:1345/databasename/user=user&password=pass

私が考える問題は、コマンドの-Nオプションがトンネルを作成し、トンネルを介してリモートコマンドを実行できないことです。これは、jcraftのjschライブラリでデフォルトでtrueであり、リモートを実行するためにデフォルトをfalseに設定できませんコマンド。

于 2016-06-01T18:56:08.573 に答える