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() 处出错;
如果您尝试在已存在的会话上进行连接,则可能会发生此异常。解决方法是关闭会话,然后开始新的会话。这对我有帮助。从这个网站找到了一些帮助:
http://flyingjxswithjava.blogspot.com/2015/03/comjcraftjschjscheexception-packet.html
引用网站的要点以了解问题:
当Session在有意断开会话或超时需要重新连接的循环中重复重用时,会发生此异常。
抛出此类异常的原因是Session第一次连接到远程站点时,会为该会话生成一个名为Packet的随机数。
当线程休眠 1 小时时,会话会由于在一段时间内没有活动而自动断开连接。
当会话断开时,数据包丢失。
当Session尝试重新连接时,它找不到Packet,因此抛出异常。
| 归档时间: |
|
| 查看次数: |
8466 次 |
| 最近记录: |