liugongjian opened a new issue, #506:
URL: https://github.com/apache/mina-sshd/issues/506

   ### Version
   
   2.12.1
   
   ### Bug description
   
   Those code below is my demo code. It works fine on local enviroment. But it 
does not work after deployed to remote server. The log output is shown below.
   But oddly, after restart the server, it works with no exceptions. And a 
period later(ussally after when another user logged in and try to upload file 
to sftp with this), it does not work with error log outputted again.
   
   Enviroment:
   jdk 1.8
   resin 4.0.66
   Ubuntu 24.04 LTS
   
   ```
       public void connect() throws IOException {
         //        Security.removeProvider("BC");
                 SshClient client = SshClient.setUpDefaultClient();
                 FileKeyPairProvider keyPairProvider = new 
FileKeyPairProvider(Paths.get(privateKeyPath));
                 client.setKeyIdentityProvider(keyPairProvider);
                 client.start();
         
                 System.out.println("add key to session only with try");
                 ClientSession session = 
client.connect(login,server,port).verify().getSession();
                 session.auth().verify();
         
         //        session.setKeyIdentityProvider(keyPairProvider);
                 this.session = session;
                 this.client = client;
       }
   
       public void uploadFile(String sourceFile, String destinationFile) throws 
IOException {
           try {
               SftpClient sftpClient = 
SftpClientFactory.instance().createSftpClient(session);
               File tmpFile = new File(sourceFile);
               String fileName = tmpFile.getName();
               String destinationFilePath = destinationFile.endsWith("/") ? 
destinationFile + fileName : destinationFile + "/" + fileName;
               SftpClient.Handle handle = sftpClient.open(destinationFilePath, 
EnumSet.of(SftpClient.OpenMode.Write, SftpClient.OpenMode.Create));
               String fileData = new 
String(Files.readAllBytes(Paths.get(sourceFile)));;
               sftpClient.write(handle, 0, fileData.getBytes(), 0, 
fileData.length());
               sftpClient.close(handle);
               sftpClient.close();
               if(session.isOpen()){
                   session.close(true);
               }
               if(client.isOpen()){
                   client.close();
               }
           } catch (IOException e) {
               throw e;
           }
       }
   ```
   
   And after every transfer task, I disconnect as below:
   
   
   ```
       public void disconnect() throws IOException {
           if (c != null) {
               c.disconnect();
           }
           if (channel != null) {
               channel.disconnect();
           }
           if (session != null) {
               session.disconnect(0,"");
               session.close(true);
               session = null;
           }
           if(client != null) {
               client.stop();
               client.close();
               client = null;
           }
       }
   ```
   
   
   ### Actual behavior
   
   not function well
   
   ### Expected behavior
   
   function well
   
   ### Relevant log output
   
   ```Shell
   org.apache.sshd.common.SshException: No more authentication methods available
                           at 
org.apache.sshd.common.future.AbstractSshFuture.verifyResult(AbstractSshFuture.java:141)
 ~[sshd-common-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.client.future.DefaultAuthFuture.verify(DefaultAuthFuture.java:56)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.client.future.DefaultAuthFuture.verify(DefaultAuthFuture.java:35)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.future.VerifiableFuture.verify(VerifiableFuture.java:43) 
~[sshd-common-2.12.1.jar:2.12.1]
                           at 
cx.cocca.utils.SFTPClient.connect(SFTPClient.java:133) ~[classes:?]
                           at 
cx.cocca.registry.data.transfer.SFTPDataTransferService.testConnection(SFTPDataTransferService.java:31)
 [classes:?]
                           at 
cx.cocca.registry.maintenance.EscrowFileUploader.testConnection(EscrowFileUploader.java:82)
 [classes:?]
                           at 
cx.cocca.registry.maintenance.ZoneEscrowPartialServlet.testSFTPConnection(ZoneEscrowPartialServlet.java:562)
 [classes:?]
                           at 
cx.cocca.registry.maintenance.ZoneEscrowPartialServlet.doPost(ZoneEscrowPartialServlet.java:123)
 [classes:?]
                           at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:159) [javaee-16.jar:?]
                           at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:97) [javaee-16.jar:?]
                           at 
com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109)
 [resin.jar:4.0.66]
                           at 
cx.cocca.registry.configuration.TwoFALoginSetupFilter.doFilter(TwoFALoginSetupFilter.java:26)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.registry.configuration.TwoFALoginFilter.doFilter(TwoFALoginFilter.java:36)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.registry.configuration.PasswordAgeFilter.doFilter(PasswordAgeFilter.java:108)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.utils.BannedIPAddressFilter.doFilter(BannedIPAddressFilter.java:50) 
[classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.utils.DsRecordsMiniSiteFilter.doFilter(DsRecordsMiniSiteFilter.java:65)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.utils.ActivationMiniSiteFilter.doFilter(ActivationMiniSiteFilter.java:53)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.utils.WhoisMiniSiteFilter.doFilter(WhoisMiniSiteFilter.java:51) 
[classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.utils.HistoricalAbstractMiniSiteFilter.doFilter(HistoricalAbstractMiniSiteFilter.java:54)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.utils.KeyRetrievalMiniSiteFilter.doFilter(KeyRetrievalMiniSiteFilter.java:54)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.utils.TransactionIdFilter.doFilter(TransactionIdFilter.java:51) 
[classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.registry.configuration.MaintenanceModeSessionInvalidationFilter.doFilter(MaintenanceModeSessionInvalidationFilter.java:83)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.utils.AdminAuthFilter.doFilter(AdminAuthFilter.java:33) [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.registry.configuration.DuplicateLoginSessionInvalidationFilter.doFilter(DuplicateLoginSessionInvalidationFilter.java:57)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.registry.configuration.LoginStateSynchronisationFilter.doFilter(LoginStateSynchronisationFilter.java:56)
 [classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
cx.cocca.utils.SingleIPAddressFilter.doFilter(SingleIPAddressFilter.java:46) 
[classes:?]
                           at 
com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
 [resin.jar:4.0.66]
                           at 
com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156) 
[resin.jar:4.0.66]
                           at 
com.caucho.server.rewrite.MatchFilterChain.doFilter(MatchFilterChain.java:98) 
[resin.jar:4.0.66]
                           at 
com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156) 
[resin.jar:4.0.66]
                           at 
com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95)
 [resin.jar:4.0.66]
                           at 
com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:314)
 [resin.jar:4.0.66]
                           at 
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:845) 
[resin.jar:4.0.66]
                           at 
com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1395)
 [resin.jar:4.0.66]
                           at 
com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1351) 
[resin.jar:4.0.66]
                           at 
com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1335)
 [resin.jar:4.0.66]
                           at 
com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1243) 
[resin.jar:4.0.66]
                           at 
com.caucho.network.listen.TcpSocketLink.handleAcceptTaskImpl(TcpSocketLink.java:1037)
 [resin.jar:4.0.66]
                           at 
com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:117) 
[resin.jar:4.0.66]
                           at 
com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:93) 
[resin.jar:4.0.66]
                           at 
com.caucho.network.listen.SocketLinkThreadLauncher.handleTasks(SocketLinkThreadLauncher.java:175)
 [resin.jar:4.0.66]
                           at 
com.caucho.network.listen.TcpSocketAcceptThread.run(TcpSocketAcceptThread.java:61)
 [resin.jar:4.0.66]
                           at 
com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173) 
[resin.jar:4.0.66]
                           at 
com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118) 
[resin.jar:4.0.66]
                         Caused by: org.apache.sshd.common.SshException: No 
more authentication methods available
                           at 
org.apache.sshd.client.session.ClientUserAuthService.tryNext(ClientUserAuthService.java:390)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.client.session.ClientUserAuthService.processUserAuth(ClientUserAuthService.java:346)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.client.session.ClientUserAuthService.process(ClientUserAuthService.java:267)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.session.helpers.CurrentService.process(CurrentService.java:109)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.session.helpers.AbstractSession.doHandleMessage(AbstractSession.java:624)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.session.helpers.AbstractSession.lambda$handleMessage$0(AbstractSession.java:545)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.util.threads.ThreadUtils.runAsInternal(ThreadUtils.java:68)
 ~[sshd-common-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.session.helpers.AbstractSession.handleMessage(AbstractSession.java:544)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.session.helpers.AbstractSession.decode(AbstractSession.java:1688)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.session.helpers.AbstractSession.messageReceived(AbstractSession.java:505)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.session.helpers.AbstractSessionIoHandler.messageReceived(AbstractSessionIoHandler.java:64)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.io.nio2.Nio2Session.handleReadCycleCompletion(Nio2Session.java:409)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.io.nio2.Nio2Session$1.onCompleted(Nio2Session.java:382) 
~[sshd-core-2.12.1.jar:2.12.1]
                           at 
org.apache.sshd.common.io.nio2.Nio2Session$1.onCompleted(Nio2Session.java:377) 
~[sshd-core-2.12.1.jar:2.12.1]
   [2024-05-23 21:27:34]   at 
org.apache.sshd.common.io.nio2.Nio2CompletionHandler.lambda$completed$0(Nio2CompletionHandler.java:38)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_402]
                           at 
org.apache.sshd.common.io.nio2.Nio2CompletionHandler.completed(Nio2CompletionHandler.java:37)
 ~[sshd-core-2.12.1.jar:2.12.1]
                           at 
sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) ~[?:1.8.0_402]
                           at sun.nio.ch.Invoker$2.run(Invoker.java:218) 
~[?:1.8.0_402]
                           at 
sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
 ~[?:1.8.0_402]
                           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[?:1.8.0_402]
                           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[?:1.8.0_402]
                           at java.lang.Thread.run(Thread.java:750) 
~[?:1.8.0_402]
   ```
   
   
   ### Other information
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to