JSch - session.connect() 的问题

JSch - Problems with session.connect()

目前我正在开发一个 Java 程序来监控我们的 UNIX 脚本。问题是我们下周要换一台新服务器,我必须更改我的程序,以便它可以使用 JSch 连接到新机器。 目前我正在使用这种方式连接到旧服务器:

JSch jsch = new JSch();
session = jsch.getSession(user, host);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.setTimeout(60000);
session.connect();

在新服务器上测试时,我遇到了问题,它会在 session.connect() 处停止并且不会再继续了。
经过一些研究,我发现我使用的 JSch 库对于来自服务器的新 OpenSSH 版本来说已经过时了,所以我将我的 JSch 升级到版本 0.1.54,但即使那样也不会解决问题。 实际上,我正在尝试为此使用 SSH 密钥,但问题仍然存在,没有堆栈跟踪,什么也没有。这是我尝试获取的实际代码 运行:

String private_key = "path_to_file";
jsch.addIdentity(private_key);
session = jsch.getSession(user, host, 22);
session.setTimeout(60000);
session.connect();

键:
SSH-2 RSA

客户:
JRE 1.8.0_112<br> JSch 0.1.54

服务器:
OpenSSH 7.2p2<br> OpenSSL 1.0.2g

在服务器上使用此配置可​​以正常工作:
OpenSSH 6.6.1p1
OpenSSL 1.0.1f

编辑
添加

java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
config.put("PreferredAuthentications", "password");

为我解决了问题

正在添加

java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
config.put("PreferredAuthentications", "password");

为我解决了问题

如果我们传递密码,这段代码对我来说:

test(){
Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        JSch jsch = new JSch();
        config.put("StrictHostKeyChecking", "no");
        config.put("PreferredAuthentications", "publickey,keyboard-interactive,password");
        session = jsch.getSession(username, hostip, 22);
        session.setPassword(password);
        session.setConfig(config);
        session.connect();
}