java - SFTP 连接错误

标签 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******************");


    ==============================================================    

发现问题后,我使用了 jsch-0.1.54.jar 的更新 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 连接代码的上下文:我正在使用私钥连接服务器以将文件下载到本地

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

最佳答案

Algorithm negotiation fail.

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

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

解决方案将取决于您发现的内容。

关于java - SFTP 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50082387/

相关文章:

java - IP 作为 Linux 数组元素会抛出 UnknownHostException 但作为常量可以正常工作

java - 雅各普 : Solving an 0/1 knapsack problem

java - 如何 Intent Activity 使用AlertDialog?

java - 这是在 Java 中错误使用内部条件队列吗?

java - 在 Appfog 上部署简单的 Java Web 应用程序

ssh - sftp 失败,错误为 'message too long'

java - Tron Bike Game Java(通过 JPanel 移动角色)

java - 通过 JSch shell 的多个命令

java - 将 Guardian 文件上传到 Tandem/Compaq/HPE NonStop 服务器

java - 使用 "SSH2 PUBLIC KEY"格式的公钥验证 JSch 中的主机 key (RFC 4716)