【发布时间】:2017-08-10 09:15:09
【问题描述】:
目前我正在开发一个 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-Keys,但问题仍然存在,没有堆栈跟踪,什么都没有。这是我尝试运行的实际代码:
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");
帮我解决了问题
【问题讨论】:
-
不要在问题中添加已解决的问题,而是在答案中添加您的解决方案并将其标记为已接受..
-
谢谢,我明天会标记我的答案,现在不能这样做。我会在以后的问题中记住这一点。