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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta