使用 JSch (0.1.55) 库连接到 SFTP 服务器的简单 Java 应用程序。 发送 SSH_MSG_KEXINIT 后在密钥交换步骤挂起。在下面记录。
代码在 Windows 测试机器上失败, 能够使用 WinSCP 连接相同的凭据。 同样的代码在我们最初发现问题的 Linux Docker 容器上也失败了。 只要我们不使用 JSch 库,相同的信用就可以正常工作。
我们尝试在配置属性中限制不同的 kex 设置,但没有任何区别。 直到大约一个月前,我们能够毫无问题地连接到该服务器,并继续使用相同的代码连接到其他服务器。
用于测试的简化代码
JSch jsch = new JSch();
java.util.Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("PreferredAuthentication", "password,keyboard-interactive");
try {
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(config);
session.connect(30 * 1000);
session.disconnect();
} catch (Exception e) {
myLog(e.getMessage());
}
有什么想法吗?
2023 年 3 月 17 日星期五 15:07:12 EDT - 连接到 ..com 端口 22
美国东部时间 2023 年 3 月 17 日星期五 15:07:13 - 已建立连接
美国东部时间 2023 年 3 月 17 日星期五 15:07:13 - 远程版本字符串:SSH-2.0-Serv-U_15.3.2.155
美国东部时间 2023 年 3 月 17 日星期五 15:07:13 - 本地版本字符串:SSH-2.0-JSCH-0.1.54
美国东部时间 2023 年 3 月 17 日星期五 15:07:13 - 检查密码:aes256-ctr、aes192-ctr、aes128-ctr、aes256-cbc、aes192-cbc、aes128-cbc、3des-ctr、arcfour、arcfour128、arcfour256
美国东部时间 2023 年 3 月 17 日星期五 15:07:13 - CheckKexes:diffie-hellman-group14-sha1、ecdh-sha2-nistp256、ecdh-sha2-nistp384、ecdh-sha2-nistp521
美国东部时间 2023 年 3 月 17 日星期五 15:07:13 - 检查签名:ecdsa-sha2-nistp256、ecdsa-sha2-nistp384、ecdsa-sha2-nistp521
美国东部时间 2023 年 3 月 17 日星期五 15:07:13 - SSH_MSG_KEXINIT 已发送
美国东部时间 2023 年 3 月 17 日星期五 15:07:43 - 从 ****.*****.com 端口 22
断开连接
与目标 VM 断开连接,地址:'localhost:64978',传输:'socket'
连接到目标虚拟机,地址:'127.0.0.1:64967',传输:'socket'
美国东部时间 2023 年 3 月 17 日星期五 15:07:55 - Session.connect:java.net.SocketTimeoutException:读取超时