public static PortForwarder create(SSHClient client, String remoteHostName, String localHost, int localPort, String remoteHost, int remotePort)
throws IOException {
final LocalPortForwarder.Parameters params = new LocalPortForwarder.Parameters(localHost, localPort, remoteHost, remotePort);
ServerSocket ss = new ServerSocket();
ss.setReuseAddress(true);
ss.bind(new InetSocketAddress(localHost, localPort));
final LocalPortForwarder forwarder = client.newLocalPortForwarder(params, ss);
Thread forwarderThread = new Thread(new Runnable() {
@Override
public void run() {
try {
forwarder.listen();
} catch (IOException ignore) {
}
}
}, "SSH port forwarder thread from local port " + localPort + " to " + remoteHostName + ":" + remotePort);
forwarderThread.setDaemon(true);
logger.info("Starting {}", forwarderThread.getName());
forwarderThread.start();
return new PortForwarder(forwarderThread, ss);
}