.JSchException:数据包损坏

Cha*_*pta 4 java linux ssh jsch

我在带有 Jdk 1.7_51 的 RHEl 6 上使用 Jsch 0.1.51。在与远程机器建立会话时,我遇到了以下异常:

com.jcraft.jsch.JSchException: Packet corrupt
        at com.jcraft.jsch.Session.start_discard(Session.java:1049)
        at com.jcraft.jsch.Session.read(Session.java:919)
        at com.jcraft.jsch.UserAuthNone.start(UserAuthNone.java:56)
        at com.jcraft.jsch.Session.connect(Session.java:389)
        at com.jcraft.jsch.Session.connect(Session.java:183)
        at TestSFTP.checkException(TestSFTP.java:130)
        at TestSFTP.moveFileToDir(TestSFTP.java:78)
        at TestSFTP.main(TestSFTP.java:73)
Run Code Online (Sandbox Code Playgroud)

相同的代码在 RHEL 5 上运行良好。任何机构都可以提供一些建议..谢谢

使用的代码是:

Session   session     = null;
ChannelSftp channelSftp = null;
JSch jsch = new JSch();

session = jsch.getSession(this.sftpUser,this.sftpHost,this.sftpPort);

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword(this.sftpPassword);
session.connect();
channelSftp = (ChannelSftp)session.openChannel("sftp");
channelSftp.connect();
Run Code Online (Sandbox Code Playgroud)

我在 session.connect() 处出错;

Anu*_*u M 6

如果您尝试在已存在的会话上进行连接,则可能会发生此异常。解决方法是关闭会话,然后开始新的会话。这对我有帮助。从这个网站找到了一些帮助:

http://flyingjxswithjava.blogspot.com/2015/03/comjcraftjschjscheexception-packet.html

引用网站的要点以了解问题:

  • 当Session在有意断开会话或超时需要重新连接的循环中重复重用时,会发生此异常。

  • 抛出此类异常的原因是Session第一次连接到远程站点时,会为该会话生成一个名为Packet的随机数。

  • 当线程休眠 1 小时时,会话会由于在一段时间内没有活动而自动断开连接。

  • 当会话断开时,数据包丢失。

  • 当Session尝试重新连接时,它找不到Packet,因此抛出异常。