2017-08-10 34 views
1

目前我正在开发Java程序来监视我们的UNIX脚本。问题是我们下周要购买一台新服务器,并且我必须更改我的程序,以便它可以使用JSch连接到新机器。 目前我使用这种方式去旧服务器的连接:JSch - session.connect()的问题

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"); 

解决了这个问题对我来说

+0

而不是增加在问题的解决增加您的解决方案中的答案,将其标记接受.. – Ali786

+0

谢谢,我会记住我的答案明天,现在不能做到这一点。我将为未来的问题记住这一点。 – StefanPG

回答

1

添加

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

解决了这个问题对我来说