SFTP连接错误

时间:2018-04-29 00:49:50

标签: java jsch

我在我的程序中使用jsch-0.1.51.jar进行sftp连接,并且它在过去1年中工作正常,但突然程序开始抛出错误:

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 IDE运行该程序时,它运行正常。但是当我创建这个Java代码的jar文件时,我遇到了这些问题。

此SFTP连接代码的上下文:我使用私钥连接服务器以将文件下载到本地

有些人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

  

算法协商失败。

这意味着客户端和服务器端无法就用于保持SSH连接安全的加密算法达成一致。发生这种情况时,服务器端将关闭连接,从而导致您看到的IOException。

最可能的解释是客户端SSH实现已过期,或者服务器端SSH实现已过期。在jcsh" DEBUG"中应该有一些线索。记录;见JSch logger - where can I configure the level。如果失败,请查看服务器端的日志。

解决方案取决于您的发现。