[ https://issues.apache.org/jira/browse/SSHD-1033?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17157519#comment-17157519 ]
Lyor Goldstein commented on SSHD-1033: -------------------------------------- Seems OK - 2-3 minor comments ... > Unable to use DynamicPortForwarding + LocalPortForwarding > --------------------------------------------------------- > > Key: SSHD-1033 > URL: https://issues.apache.org/jira/browse/SSHD-1033 > Project: MINA SSHD > Issue Type: Bug > Affects Versions: 2.5.1 > Reporter: Guillermo Grandes > Priority: Major > Labels: easyfix, pull-request-available, ready-to-commit > Time Spent: 1h 40m > Remaining Estimate: 0h > > This is the error running LocalForwarder + DynamicForwarder: > {code:none} > [sshd-SshClient[457e2f02]-nio2-thread-6] WARN > org.apache.sshd.common.forward.DefaultForwardingFilter - > sessionCreated(Nio2Session[local=/127.0.0.1:8000, > remote=/127.0.0.1:57657])[local=/127.0.0.1:8000, remote=null] cannot locate > original local entry for accepted=/127.0.0.1:8000 > [sshd-SshClient[457e2f02]-nio2-thread-2] WARN > org.apache.sshd.client.channel.ClientChannelPendingMessagesQueue - > operationComplete(ClientChannelPendingMessagesQueue[channel=TcpipClientChannel[id=1, > recipient=-1]-ClientSessionImpl[testuser@/192.168.x.x:22], open=false]) > SshChannelOpenException[open failed] signaled > [sshd-SshClient[457e2f02]-nio2-thread-2] WARN > org.apache.sshd.common.forward.DefaultForwardingFilter - Failed > (SshChannelOpenException) to open channel for > session=Nio2Session[local=/127.0.0.1:8000, remote=/127.0.0.1:57657]: open > failed > {code} > This is the code to reproduce. > * When testLocal = true, testDynamic = true; dynamic fail. > * if the order of test are inverted, fail the local instead of dynamic. > * if one test is false, the other works well. > {code:java} > import java.io.BufferedReader; > import java.io.IOException; > import java.io.InputStreamReader; > import java.net.HttpURLConnection; > import java.net.InetSocketAddress; > import java.net.Proxy; > import java.net.URL; > import org.apache.sshd.client.SshClient; > import org.apache.sshd.client.future.ConnectFuture; > import org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier; > import org.apache.sshd.client.session.ClientSession; > import org.apache.sshd.client.session.forward.DynamicPortForwardingTracker; > import org.apache.sshd.client.session.forward.ExplicitPortForwardingTracker; > import org.apache.sshd.common.util.net.SshdSocketAddress; > public class SSHClient { > public static void test(final String username, final String password, > final String host, final int port) > throws IOException { > boolean testLocal = true, testDynamic = true; > try (SshClient client = SshClient.setUpDefaultClient()) { > > client.setServerKeyVerifier(AcceptAllServerKeyVerifier.INSTANCE); > client.start(); > try { > ConnectFuture connect = > client.connect(username, host, port); > connect.await(10000); > ClientSession session = > connect.getClientSession(); > session.addPasswordIdentity(password); > session.auth().verify(10000); > if (testLocal) { > System.out.println("================== > Local =================="); > ExplicitPortForwardingTracker > localTracker = session.createLocalPortForwardingTracker( > new > SshdSocketAddress("localhost", 8082), > new > SshdSocketAddress("test.javastack.org", 80)); > sleep(1000); > > System.out.println("LocalPortForwarding: " // > + > localTracker.getLocalAddress() + " -> " // > + > localTracker.getRemoteAddress()); > SshdSocketAddress localSocketAddress = > localTracker.getLocalAddress(); > if (localSocketAddress != null) { > Proxy proxy = new > Proxy(Proxy.Type.HTTP, > new > InetSocketAddress(localSocketAddress.getHostName(), // > > localSocketAddress.getPort())); > testRemoteURL(proxy); > } > } > if (testDynamic) { > System.out.println("================== > Dynamic =================="); > DynamicPortForwardingTracker > dynamicTracker = session > > .createDynamicPortForwardingTracker(new SshdSocketAddress("localhost", 8000)); > sleep(1000); > > System.out.println("DynamicPortForwarding: " // > + > dynamicTracker.getLocalAddress()); > SshdSocketAddress dynamicSocketAddress > = dynamicTracker.getLocalAddress(); > if (dynamicSocketAddress != null) { > Proxy proxy = new > Proxy(Proxy.Type.SOCKS, > new > InetSocketAddress(dynamicSocketAddress.getHostName(), // > > dynamicSocketAddress.getPort())); > testRemoteURL(proxy); > } > } > // @see > org.apache.sshd.common.forward.DefaultForwardingFilter#sessionCreated > sleep(1000); > } finally { > client.stop(); > } > } > } > private static final void sleep(final long t) { > try { > Thread.sleep(t); > } catch (Exception ign) { > } > } > private static final void testRemoteURL(final Proxy proxy) throws > IOException { > HttpURLConnection connection = (HttpURLConnection) new > URL("http://test.javastack.org/") > .openConnection(proxy); > System.out.println("Get URL: " + connection.getURL()); > try { > BufferedReader in = new BufferedReader(new > InputStreamReader(connection.getInputStream())); > System.out.println("Response from server:"); > String inputLine; > while ((inputLine = in.readLine()) != null) { > System.out.println(inputLine); > } > in.close(); > } catch (Exception e) { > System.out.println("Failed: " + e); > } > } > } > {code} > {code:xml} > <!-- dependencies used ---> > <dependency> > <groupId>org.apache.sshd</groupId> > <artifactId>sshd-core</artifactId> > <version>2.5.1</version> > </dependency> > <dependency> > <groupId>org.apache.mina</groupId> > <artifactId>mina-core</artifactId> > <version>2.1.3</version> > </dependency> > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-api</artifactId> > <version>1.7.30</version> > </dependency> > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-simple</artifactId> > <version>1.7.30</version> > </dependency> > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org For additional commands, e-mail: dev-h...@mina.apache.org