春季-SFTP身份验证间歇性失败

时间:2018-11-16 22:54:20

标签: java spring networking sftp jsch

看起来问题很奇怪。在我们的产品服务器中,我们一直在通过jsch建立SFTP连接。使用服务器的authkey,它可以很好地工作到一天中午。突然间30分钟,我们由于身份验证失败而遇到问题。然后再次开始工作。请指教。

Caused by: org.springframework.messaging.MessagingException: Failed to execute on session; nested exception is java.lang.IllegalStateException: failed to create SFTP Session
    at org.springframework.integration.file.remote.RemoteFileTemplate.execute(RemoteFileTemplate.java:343)
    at org.springframework.integration.file.remote.RemoteFileTemplate.send(RemoteFileTemplate.java:209)
    at org.springframework.integration.file.remote.RemoteFileTemplate.send(RemoteFileTemplate.java:199)
    at org.springframework.integration.file.remote.RemoteFileTemplate.send(RemoteFileTemplate.java:193)
    at org.springframework.integration.file.remote.handler.FileTransferringMessageHandler.handleMessageInternal(FileTransferringMessageHandler.java:110)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78)
    at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
    ... 10 more
Caused by: java.lang.IllegalStateException: failed to create SFTP Session
    at org.springframework.integration.sftp.session.DefaultSftpSessionFactory.getSession(DefaultSftpSessionFactory.java:355)
    at org.springframework.integration.sftp.session.DefaultSftpSessionFactory.getSession(DefaultSftpSessionFactory.java:49)
    at org.springframework.integration.file.remote.RemoteFileTemplate.execute(RemoteFileTemplate.java:332)
    ... 16 more
Caused by: java.lang.IllegalStateException: failed to connect
    at org.springframework.integration.sftp.session.SftpSession.connect(SftpSession.java:272)
    at org.springframework.integration.sftp.session.DefaultSftpSessionFactory.getSession(DefaultSftpSessionFactory.java:350)
    ... 18 more
Caused by: com.jcraft.jsch.JSchException: SSH_MSG_DISCONNECT: 11 Too many bad authentication attempts! 
    at com.jcraft.jsch.Session.read(Session.java:987)
    at com.jcraft.jsch.UserAuthPublicKey.start(UserAuthPublicKey.java:83)
    at com.jcraft.jsch.Session.connect(Session.java:463)
    at com.jcraft.jsch.Session.connect(Session.java:183)
    at org.springframework.integration.sftp.session.SftpSession.connect(SftpSession.java:263)

1 个答案:

答案 0 :(得分:0)

最后,我们找出了问题的根本原因。看起来FileNet团队有一些接受无效凭据的阈值。当应用程序超出此无效尝试阈值时,它将抛出SSH_MSG_DISCONNECT: 11 Too many bad authentication attempts! 并暂停15或30分钟,以接受新连接。

似乎prod中的调度程序之一使用无效的凭据来反复独立地访问FileNet。因此,当Filenet由于超出由其他程序引起的错误身份验证尝试的阈值而无法接受新连接时,其他假定运行良好的程序会间歇性地出错。