最近发现服务升级到ssh7.5以后,通过mina连接服务器,总是被服务器连接重置,报错如下
Connection to 192.168.186.152 closed by remote host.
Connection to 192.168.186.152 closed.
然后跟踪mina代码日志如下:
08-09 01:16:13,546 DEBUG [org.apache.sshd.server.kex.DHG14] [NioProcessor-3] 125: Send SSH_MSG_KEXDH_REPLY
08-09 01:16:13,546 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 821: Send SSH_MSG_NEWKEYS
08-09 01:16:13,547 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 236: -----handleMessage------end
08-09 01:16:13,549 WARN [org.apache.sshd.server.session.SessionFactory] [NioProcessor-3] 61: AbstractSessionIoHandler-----messageReceived()--------
08-09 01:16:13,549 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 132: -----handleMessage------start
08-09 01:16:13,549 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 134: Received packet SSH_MSG_NEWKEYS
08-09 01:16:13,550 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 192: Received SSH_MSG_NEWKEYS
08-09 01:16:13,550 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 236: -----handleMessage------end
08-09 01:16:13,589 WARN [org.apache.sshd.server.session.SessionFactory] [NioProcessor-3] 61: AbstractSessionIoHandler-----messageReceived()--------
08-09 01:16:13,590 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 132: -----handleMessage------start
08-09 01:16:13,590 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 134: Received packet SSH_MSG_SERVICE_REQUEST
08-09 01:16:13,590 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 204: Received SSH_MSG_SERVICE_REQUEST 'ssh-userauth'
08-09 01:16:13,590 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 418: ----userAuth-----start
08-09 01:16:13,590 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 420: Accepting user authentication request
08-09 01:16:13,590 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 427: Authorized authentication methods: password
08-09 01:16:13,590 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 546: ----userAuth-----end
08-09 01:16:13,591 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 236: -----handleMessage------end
08-09 01:16:13,591 WARN [org.apache.sshd.server.session.SessionFactory] [NioProcessor-3] 61: AbstractSessionIoHandler-----messageReceived()--------
08-09 01:16:13,591 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 132: -----handleMessage------start
08-09 01:16:13,591 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 134: Received packet SSH_MSG_USERAUTH_REQUEST
08-09 01:16:13,591 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 224: Received SSH_MSG_USERAUTH_REQUEST
08-09 01:16:13,591 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 418: ----userAuth-----start
08-09 01:16:13,592 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 446: Authenticating user 'dingxueqian,127.0.0.1' with method 'none'
08-09 01:16:13,592 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 478: Unsupported authentication method 'none'
08-09 01:16:13,592 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 546: ----userAuth-----end
08-09 01:16:13,592 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 236: -----handleMessage------end
08-09 01:16:16,053 WARN [org.apache.sshd.server.session.SessionFactory] [NioProcessor-3] 61: AbstractSessionIoHandler-----messageReceived()--------
08-09 01:16:16,054 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 132: -----handleMessage------start
08-09 01:16:16,054 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 134: Received packet SSH_MSG_USERAUTH_REQUEST
08-09 01:16:16,054 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 224: Received SSH_MSG_USERAUTH_REQUEST
08-09 01:16:16,054 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 418: ----userAuth-----start
08-09 01:16:16,054 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 446: Authenticating user 'dingxueqian,127.0.0.1' with method 'password'
08-09 01:16:16,054 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 468: Authentication succeeded
08-09 01:16:16,054 INFO [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 532: Session dingxueqian,127.0.0.1@/192.168.186.152:56913 authenticated
08-09 01:16:16,054 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 546: ----userAuth-----end
08-09 01:16:16,055 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 236: -----handleMessage------end
08-09 01:16:16,055 WARN [org.apache.sshd.server.session.SessionFactory] [NioProcessor-3] 61: AbstractSessionIoHandler-----messageReceived()--------
08-09 01:16:16,055 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 132: -----handleMessage------start
08-09 01:16:16,055 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 134: Received packet SSH_MSG_CHANNEL_OPEN
08-09 01:16:16,056 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 578: ----channelOpen-----start
08-09 01:16:16,056 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 584: Received SSH_MSG_CHANNEL_OPEN session
08-09 01:16:16,056 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 629: ----future.isOpened()----start
08-09 01:16:16,056 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 639: ----future.isOpened()----end
08-09 01:16:16,056 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 666: ----channelOpen-----end
08-09 01:16:16,056 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 236: -----handleMessage------end
08-09 01:16:16,057 WARN [org.apache.sshd.server.session.SessionFactory] [NioProcessor-3] 61: AbstractSessionIoHandler-----messageReceived()--------
08-09 01:16:16,057 WARN [org.apache.sshd.server.session.SessionFactory] [NioProcessor-3] 61: AbstractSessionIoHandler-----messageReceived()--------
08-09 01:16:16,057 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 132: -----handleMessage------start
08-09 01:16:16,057 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 134: Received packet SSH_MSG_CHANNEL_REQUEST
08-09 01:16:16,057 DEBUG [org.apache.sshd.server.channel.ChannelSession] [NioProcessor-3] 192: Received SSH_MSG_CHANNEL_REQUEST on channel 0
08-09 01:16:16,057 DEBUG [org.apache.sshd.server.channel.ChannelSession] [NioProcessor-3] 194: Received channel request: pty-req
08-09 01:16:16,058 WARN [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 287: AbstractSession:Exception caught
08-09 01:16:16,058 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 288: AbstractSession:Exception caughtjava.lang.NullPointerException
08-09 01:16:16,058 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 335: Closing session
08-09 01:16:16,058 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 342: Closing channel 0
08-09 01:16:16,058 DEBUG [org.apache.sshd.server.channel.ChannelSession] [NioProcessor-3] 85: Closing channel 0 immediately
08-09 01:16:16,058 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 349: Closing IoSession
08-09 01:16:16,059 DEBUG [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 315: IoSession closed
08-09 01:16:16,059 INFO [org.apache.sshd.server.session.ServerSession] [NioProcessor-3] 320: Session dingxueqian,127.0.0.1@/192.168.186.152:56913 closed
然后最后发现是ssh7.5升级后 发送给服务端改变窗口大小的参数带null,然后修改源码
for (int i = 0; i < modes.length && modes[i] != 0;) {
PtyMode mode = PtyMode.fromInt(modes[i++]);
int val = ((modes[i++] << 24) & 0xff000000)
| ((modes[i++] << 16) & 0x00ff0000)
| ((modes[i++] << 8) & 0x0000ff00)
| ((modes[i++]) & 0x000000ff);
//兼容客户端ssh7.3以上(修改位置,增加空值判断)
if (mode == null) {
continue;
}
getEnvironment().getPtyModes().put(mode, val);
}
然后问题解决