JSch túneles múltiples / jumphosts
No estoy seguro de si esto se debe al uso de una clave privada en lugar de una contraseña para el reenvío de puertos, pero esto es lo que estoy tratando de hacer
Necesito reenviar el puerto local 3308 hasta mi base de datos SQL SQL en 3306.
Puedo ejecutar cosas como esta todas juntas en la terminal en mi @ loc
ssh -L 3308:loacalhost:3307 username@jumpbox "ssh -L 3307:mysqlDB:3306 username@server"
O ejecute la primera parte en mi local y luego la segunda parte en el jumpbox. Ambos funcionan bien y me puedo conectar a mi host local: 3308.
El problema surge cuando empiezo a usar JSch. Aquí está mi código
JSch jsch = new JSch();
jsch.addIdentity("~/.ssh/id_rsa");
Session session = jsch.getSession("username", "jumpbox");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
int assinged_port = session.setPortForwardingL(3308, "localhost", 3307);
Session mysqlSession = jsch.getSession("username", "server", assinged_port);
mysqlSession.setConfig("StrictHostKeyChecking", "no");
mysqlSession.connect(); // Connection timed out here
mysqlSession.setPortForwardingL(3307, "mysqlDB", 3306);
La primera conexión se realizó pero la segunda se agotó.
Exception en el subproceso "main" com.jcraft.jsch.JSchException: java.net.ConnectException: Se agotó el tiempo de espera de la operación (se agotó el tiempo de espera de la conexión)
¿Estoy haciendo algo mal aquí con JSch o el reenvío de puertos?