JSch 套接字超时 - 连接超时

问题描述 投票:0回答:1

我正在尝试使用 JSch 建立 SFTP 会话。该代码工作正常,我能够与多个服务器建立会话。然而,今天我遇到了其中一台服务器的问题。

Caused by: com.jcraft.jsch.JSchException: java.net.ConnectException: Connection timed out: 
connect at com.jcraft.jsch.Util.createSocket(Util.java:349) ~[jsch-0.1.54.jar:?]
        at com.jcraft.jsch.Session.connect(Session.java:215) ~[jsch-0.1.54.jar:?]
        at com.jcraft.jsch.Session.connect(Session.java:183) ~[jsch-0.1.54.jar:?]

调试后发现问题发生在Session.class中。

tmp.join(timeout);

我尝试明确设置超时,如下所示,但仍然失败:

JSch jsch = new JSch();
Session session = jsch.getSession(userName, ip, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect(60000);

注意:如果没有通过这些超时,到目前为止我还没有遇到问题。

有人可以帮助我了解此行为的可能原因并指导我有关超时的问题吗?另外,如果下面的解决方案有帮助的话,为什么会有帮助呢?我正在尝试了解其根本原因和解决方案。

JSch 会话超时限制

谢谢

sockets session sftp jsch connection-timeout
1个回答
0
投票

对于遇到上述问题的任何人,可能的原因之一可能是代理。 JSch Session 类因超时代码而失败,但未提供详细的堆栈跟踪。

我必须启用代理才能解决这个问题。 session.setProxy(新ProxyHTTP(PROXY_HOST,PROXY_PORT))。如果代理类型是这些各自的类型,我可能需要实现 SOCKS4 和 SOCKS5 代理。

© www.soinside.com 2019 - 2024. All rights reserved.