[ https://issues.apache.org/jira/browse/SSHD-1055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17622669#comment-17622669 ]
Alexander Amador commented on SSHD-1055: ---------------------------------------- Yes, I agree, that is where the problems appear to start. I will give the master a shot. I am new to using a forum like this, so please bear with me. I downloaded the snapshot labeled master from this page... https://gitbox.apache.org/repos/asf?p=mina-sshd.git This is what you were meaning right ? > Remote port forwarding mode does not handle EOF properly > -------------------------------------------------------- > > Key: SSHD-1055 > URL: https://issues.apache.org/jira/browse/SSHD-1055 > Project: MINA SSHD > Issue Type: Bug > Affects Versions: 2.5.1 > Reporter: Feng Jiajie > Assignee: Thomas Wolf > Priority: Major > Fix For: 2.9.0 > > Attachments: image001.png > > Time Spent: 1h 10m > Remaining Estimate: 0h > > I want to call the remote server's gRPC service locally through an SSH > tunnel. > MyApp -> MINA SSHD -> \{Internet} -> gRPC Server > It works just fine with OpenSSH, but there is a small problem(no problems > with core functions, only in unusual circumstances) with Mina SSHD. > I think the problem is Mina SSHD's handling of EOF. > Here is the example: > Step 1. Start a gRPC server: > Because we only need a gRPC server to reproduce the problem, so I write a > simple version without any service: > {code:java} > <dependency> > <groupId>io.grpc</groupId> > <artifactId>grpc-netty-shaded</artifactId> > <version>1.27.2</version> > </dependency> > <dependency> > <groupId>io.grpc</groupId> > <artifactId>grpc-protobuf</artifactId> > <version>1.27.2</version> > </dependency> > <dependency> > <groupId>io.grpc</groupId> > <artifactId>grpc-stub</artifactId> > <version>1.27.2</version> > </dependency> > {code} > main: > {code:java} > import io.grpc.Server; > import io.grpc.ServerBuilder; > public class EmptyGrpcServer { > public static void main(String[] args) throws Exception { > Server server = ServerBuilder.forPort(23645).build().start(); > server.awaitTermination(); > } > } > {code} > Full example can be fond here: > [https://github.com/grpc/grpc-java/blob/master/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java] > > Step 2. Start a MINA SSHD server: > {code:java} > import org.apache.sshd.server.SshServer; > import org.apache.sshd.server.forward.AcceptAllForwardingFilter; > import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider; > import java.nio.file.Paths; > public class Example1 { > public static void main(String[] args) throws Exception { > SshServer sshd = SshServer.setUpDefaultServer(); > sshd.setPort(12133); > sshd.setKeyPairProvider(new > SimpleGeneratorHostKeyProvider(Paths.get("/tmp/a.ser"))); > sshd.setPasswordAuthenticator((username, password, session) -> true); > sshd.setForwardingFilter(AcceptAllForwardingFilter.INSTANCE); > sshd.start(); > Thread.sleep(10000000); > } > } > {code} > Step 3. Create a channel using ssh client > {code:java} > ssh -o 'ExitOnForwardFailure yes' -vvv -p 12133 -f -x -N -T -R > 0.0.0.0:0:127.0.0.1:23645 test5@127.0.0.1 > {code} > Step 4. Reproduce > If I connect directly to the gRPC server using curl, cause gRPC using http/2, > I would get error output like this: > {code:java} > $ curl 127.0.0.1:23645 > ���+Unexpected HTTP/1.x request: GET / > $ > {code} > Then if I do step 3 with an OpenSSH server, I would get same error output: > {code:java} > $ ssh -o 'ExitOnForwardFailure yes' -f -x -N -T -R 0.0.0.0:0:127.0.0.1:23645 > w...@dev.kbyte.cn > Allocated port 13525 for remote forward to 127.0.0.1:23645 > $ > $ curl dev.kbyte.cn:13525 > ���+Unexpected HTTP/1.x request: GET / > $ > {code} > But when I do step 3 with MINA SSHD, curl would stuck without any output: > {code:java} > $ curl 127.0.0.1:55604 > {code} > I found MINA SSHD had already got and wrote the package with the string > "Unexpected.HTTP/1.x.request:.GET", and received SSH_MSG_CHANNEL_EOF. > So I think handleEof should do more? like send SSH_MSG_CHANNEL_EOF to curl? > -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org For additional commands, e-mail: dev-h...@mina.apache.org