Hello, all! I noted that, after receiving a given amount of data, the server session is not able to close the connection properly.
A good connection with a small amount of data transferred looks like the following: ==> Call to onExit callback. [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Send SSH_MSG_CHANNEL_EOF on channel 101 [pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Writing 52 bytes [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Send SSH_MSG_CHANNEL_REQUEST exit-status on channel 101 [pool-2-thread-2] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Read 36 bytes [pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Writing 68 bytes [pool-2-thread-2] DEBUG org.apache.sshd.server.session.ServerSession - Received packet SSH_MSG_CHANNEL_EOF [pool-2-thread-2] DEBUG org.apache.sshd.server.channel.ChannelSession - Received SSH_MSG_CHANNEL_EOF on channel 101 [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Closing channel 101 gracefully [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Wait 5s for shell to exit cleanly [pool-2-thread-3] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Read 36 bytes [pool-2-thread-3] DEBUG org.apache.sshd.server.session.ServerSession - Received packet SSH_MSG_CHANNEL_CLOSE [pool-2-thread-3] DEBUG org.apache.sshd.server.channel.ChannelSession - Received SSH_MSG_CHANNEL_CLOSE on channel 101 ==> Received the destroy() callback. [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Send SSH_MSG_CHANNEL_CLOSE on channel 101 [pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Writing 52 bytes [pool-2-thread-5] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Socket has been disconnected, closing IoSession now [pool-2-thread-5] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Closing Nio2Session [pool-2-thread-5] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Closing socket [pool-2-thread-5] DEBUG org.apache.sshd.server.session.ServerSession - Closing session [pool-2-thread-5] DEBUG org.apache.sshd.server.session.ServerSession - Closing IoSession [pool-2-thread-5] DEBUG org.apache.sshd.server.session.ServerSession - IoSession closed [pool-2-thread-5] INFO org.apache.sshd.server.session.ServerSession - Session 123@/0:0:0:0:0:0:0:1:62075 closed And this is what happen to a connection that is not clearly closed: ==> Call to onExit callback. [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Send SSH_MSG_CHANNEL_EOF on channel 101 [pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Writing 52 bytes [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Send SSH_MSG_CHANNEL_REQUEST exit-status on channel 101 [pool-2-thread-4] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Read 36 bytes [pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Writing 68 bytes [pool-2-thread-4] DEBUG org.apache.sshd.server.session.ServerSession - Received packet SSH_MSG_CHANNEL_EOF [pool-2-thread-4] DEBUG org.apache.sshd.server.channel.ChannelSession - Received SSH_MSG_CHANNEL_EOF on channel 101 [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Closing channel 101 gracefully [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Wait 5s for shell to exit cleanly [pool-3-thread-1] DEBUG org.apache.sshd.server.channel.ChannelSession - Send SSH_MSG_CHANNEL_CLOSE on channel 101 [pool-3-thread-1] DEBUG org.apache.sshd.common.io.nio2.Nio2Session - Writing 52 bytes In this second faulty example, the destroy method is never called and the connection only closes with the 10 minutes (600000ms) threshold. Is it a kind of bug or am I misusing the application? Note that I'm not running a shell application, but in this place I'm creating a Lanterna ( code.google.com/p/lanterna) based shell directly by implementing Command interface and its factory. In order to confirm this behavior I tried to run the default SSHD implementation (SshServer.main(String[] args)) and it's still getting the same errors. Does someone have any idea about how to get it working? Thanks, Renato A. Ferreira