我在我的程序中使用jsch-0.1.51.jar作为sftp连接,它在过去的一年里运行良好,但是突然程序开始抛出错误:
Algorithm negotiation fail. Below code:
=========================================
jsch.addIdentity(sftpIdentityFilePath);
logger.info("*****************Getting SFTP Connection******************");
session = jsch.getSession(sftpUser, sftpHost, 2222);
System.out.println("crossed seesion initialize");
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("crossed seesion config");
session.connect();
System.out.println("crossed seesion connect");
channel= session.openChannel("sftp");
System.out.println("sftp server connected");
logger.info("SFTP server connected");
channel.connect();
logger.info("*****************SFTP Connected******************");
============================================================== 在发现问题后,我使用了一个更新的jar来jsch-0.1.54.jar。但它却抛出了另一个例外
2018-04-28 18:17:51 ERROR FileCopyMain:978 -
Session.connect: java.io.IOException: End of IO Stream Read同样,在这两种情况下,当我试图从Eclipse运行这个程序时,它都正常工作。但是,当我创建这个Java代码的jar文件时,我就得到了这些问题。
此SFTP连接代码的上下文:我使用私钥将服务器连接到本地文件。
有人能帮我解决这个问题吗?
发布于 2018-04-29 03:49:07
算法协商失败。
这意味着客户端和服务器端无法就用于确保SSH连接安全的加密算法达成一致。当发生这种情况时,服务器端将关闭连接,从而导致您看到的IOException。
最有可能的解释是,客户端SSH实现过时了,或者服务器端SSH实现过时了。在jcsh“调试”日志中应该有一些线索;请参见JSch logger - where can I configure the level。如果失败,请查看服务器端的日志。
解决办法将取决于你发现了什么。
https://stackoverflow.com/questions/50082387
复制相似问题