首页 > 解决方案 > 非常长的 Java JSch 连接超时

问题描述

使用 JSch 0.1.55 (org.apache.servicemix.bundles.jsch-0.1.55_1),我有一个奇怪的超时问题。

String ciphers = "blowfish-cbc," +
                 "3des-cbc,3des-ctr," +
                 "aes128-cbc,aes192-cbc,aes256-cbc," +
                 "aes128-ctr,aes192-ctr,aes256-ctr," +
                 "arcfour,arcfour128,arcfour256";

Properties p = new Properties();
p.put("StrictHostKeyChecking", "no");
p.put("compression.s2c", "none");
p.put("compression.c2s", "none");
p.put("cipher.s2c", ciphers);
p.put("cipher.c2s", ciphers);

session = jsch.getSession(user, host, port);
session.setConfig(p);
session.connect(10000);

尽管我将 10 秒作为超时时间,但 connect() 调用需要 6 天多的时间才能超时。

引起:com.jcraft.jsch.JSchException:在 com.jcraft.jsch.Session.connect(Session.java:519) 上的身份验证失败

这被用作跨大量主机的操作系统版本轮询器的一部分。挂起主机的所有者正在试验 ssh 密钥,可能是在轮询器攻击他的主机时。

有什么可以解释这么长时间的?是否有一些配置可以使超时配置降低很多?

标签: javasshjsch

解决方案


推荐阅读