You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Eugene Petrenko (JIRA)" <ji...@apache.org> on 2016/01/14 14:48:39 UTC

[jira] [Commented] (SSHD-269) Random Data corruption with Remote Port Forwarding

    [ https://issues.apache.org/jira/browse/SSHD-269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15098113#comment-15098113 ] 

Eugene Petrenko commented on SSHD-269:
--------------------------------------

This looks like reproducing again. 
I found a thread in mailing list here http://mail-archives.apache.org/mod_mbox/mina-users/201511.mbox/%3C564E1A56.6090903@linux.vnet.ibm.com%3E
I also noticed similar errors from integration tests where I run many connections from different clients to Apache SSHD powered SSHD server.

A error I see in my logs is 
{code}
Bad packet length 111236075.
Disconnecting: Packet corrupt{code}

> Random Data corruption with Remote Port Forwarding
> --------------------------------------------------
>
>                 Key: SSHD-269
>                 URL: https://issues.apache.org/jira/browse/SSHD-269
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 0.9.0
>         Environment: WIN7 + JDK7, Centos+OpenJDK7
>            Reporter: Abhishek Ganguly
>            Assignee: Guillaume Nodet
>            Priority: Critical
>             Fix For: 0.10.0
>
>         Attachments: Module1.vb
>
>
> A TCP connection set up over Remote Port Forwarding feature randomly garbles the data. On further testing I found that the TCP stream from remote-to-local is unaffected whereas the local-to-remote is bad.
> To reproduce,
> 1. setup a basic sshd. listen on port 22. call the host 'remote'.
> 2. on 'local' machine set up putty (ssh client) as follows:
> 2.1 Host name: remote
> 2.2 Port: 22
> 2.3 Connection-SSH: Dont start a shell or command at all
> 2.4 Connection-SSH-tunnels:: source-port: remote-port, destination: localhost:localport
> 2.5 Connection type: Remote [Click ADD]
> 2.6 Open connection
> this makes a tunnel from remoteserver:remoteport to localhost:localport
> 3. set up a basic TCP server on localhost:localport
> 3.1 start serving predictable byte arrays. {0000111112222....}
> 4. set up a basic TCP client. connect to remoteHost:remotePort
> 4.1 the connection automatically gets forwarded to localhost:localport where my own TCP server is running. hence a TCP connection is setup over the tunnel.
> 5. start consuming the byte array from server.
> 5.1 match the incoming bytes to expected sequence.
> you will see that the sequence is oftentimes garbled.
> 6. let the client send a similar predictable byte stream to server.
> 6.1 from client take OutputStream from the socket and push a long but predictable byte array in it.
> 6.2 from server get InputStream out of socket and read the bytes
> you will see that irrespective of array length, all the bytes are safely delivered.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)