JSch - session.connect()的问题

时间:2017-08-10 09:15:09

标签: java ssh jsch

目前我正在研究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 lib,从服务器上获取新的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");

解决了我的问题

1 个答案:

答案 0 :(得分:0)

如果我们通过密码,此代码段对我来说就是

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();
}