JSch套接字超时-连接超时

时间:2018-11-06 01:09:11

标签: sockets session sftp jsch connection-timeout

我正在尝试使用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 session timeout limit

谢谢

1 个答案:

答案 0 :(得分:0)

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

我必须启用代理才能克服此问题。 session.setProxy(新的ProxyHTTP(PROXY_HOST,PROXY_PORT))。如果proxytype是那些各自的类型,则可能需要实现SOCKS4和SOCKS5代理。

相关问题