Puerto SSH fowarding con SSHj

Estoy tratando de crear un túnel para usar un servicio detrás de un firewall, que admita SSH. Quería una solución completa en java, pero parece que no consigo que funcione. encontré estogithub snip y en base a eso, creé el siguiente código para mantener un hilo de fondo que me da el túnel:

// property on surrounding class
// static final SSHClient sshclient = new SSHClient();

Thread thread = new Thread(new Runnable() {

    @Override
    public void run() {
        try {
            String host = "10.0.3.96";
            sshclient.useCompression();
            sshclient.addHostKeyVerifier("30:68:2a:20:21:9f:c8:e8:ac:b4:a7:fc:2d:a7:d0:26");
            sshclient.connect(host);
            sshclient.authPassword("messy", "messy");
            if (!sshclient.isAuthenticated()) {
                throw new RuntimeException(String.format("Unable to authenticate against '%s'", host));
            }
            Forward forward = new Forward(8111);
            InetSocketAddress addr = new InetSocketAddress("google.com", 80);
            SocketForwardingConnectListener listener = new SocketForwardingConnectListener(addr);

            sshclient.getRemotePortForwarder().bind(forward, listener);
            sshclient.getTransport().setHeartbeatInterval(30);

            HttpURLConnection con = (HttpURLConnection) new URL("http://localhost:8111").openConnection();
            con.setRequestMethod("GET");
            BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String line = null;
            while( (line = reader.readLine()) != null) {
                System.out.println(line);
            }

            sshclient.getTransport().join();

        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            if (sshclient != null && sshclient.isConnected()) {
                sshclient.disconnect();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});
thread.setDaemon(true);
thread.start();

El problema es que si me conecto a un servidor SSH remoto como '10 .0.3.96 'no funciona. Si uso el servidor SSH local en mi host local, funcionará. He estado pasando por diferentes configuraciones con un poco de suerte y he intentado la depuración, pero no puedo comprender lo que está pasando dentro del paquete SSHj.

Ahora no tiene que ser una solución SSHj, pero sería preferible ya que otras partes del código están completamente implementadas y usan SSHj y no quiero mezclar dos paquetes SSH en un proyecto.

Gracias por cualquier ayuda.

Respuestas a la pregunta(1)

Su respuesta a la pregunta