Тайм-аут сокета JSch - Тайм-аут соединения - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь установить сеанс SFTP с использованием JSch. Код работает правильно, и я могу установить сеанс с несколькими серверами. Однако сегодня я столкнулся с проблемой на одном из серверов.

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

Спасибо

1 Ответ

0 голосов
/ 07 ноября 2018

Для любого, кто сталкивается с проблемой, подобной упомянутой выше, одной из возможных причин может быть прокси. Класс сеанса JSch не выполнялся в коде тайм-аута без детальной трассировки стека.

Мне пришлось включить прокси, чтобы обойти эту проблему. session.setProxy (новый ProxyHTTP (PROXY_HOST, PROXY_PORT)). Мне может понадобиться реализовать прокси SOCKS4 и SOCKS5, если прокси тип относится к этим соответствующим типам.

...