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]