com.jcraft.jsch.JSchException:4:收到的消息太长:1416128878

时间:2013-11-20 09:41:11

标签: sftp jsch

我正在使用jsch连接到sftp服务器并下载文件。

我的文件大小为4.4MB。

错误为received message is too long

可以下载的文件大小的最大限制是多少?

是否有任何配置可以更改最大尺寸限制?

继承人我是如何联系的     session = jsch.getSession(“##”,“##”,22);             session.setPassword( “##”);               session.setConfig(“StrictHostKeyChecking”,“no”);             session.connect();             sftpChannel =(ChannelSftp)session.openChannel(“sftp”);             sftpChannel.connect();             sftpChannel.cd( “##”);             sftpChannel.lcd( “##”);

,错误消息是

从SFTP服务器获取服务器响应时出错。     at com.scheduler.DataDiaryDataPullJob.main(DataDiaryDataPullJob.java:60)[classes /:na] 引起:com.jcraft.jsch.JSchException:4:收到的消息太长:1416128878     在com.jcraft.jsch.ChannelSftp.start(ChannelSftp.java:315)〜[jsch-0.1.50.jar:na]     在com.jcraft.jsch.Channel.connect(Channel.java:152)〜[jsch-0.1.50.jar:na]     在com.jcraft.jsch.Channel.connect(Channel.java:145)〜[jsch-0.1.50.jar:na]     at com.scheduler.DataDiaryDataPullJob.downloadSurveyFiles(DataDiaryDataPullJob.java:152)[classes /:na]     ...省略了2个常用帧 引起:com.jcraft.jsch.SftpException:收到的消息太长:1416128878     在com.jcraft.jsch.ChannelSftp.start(ChannelSftp.java:265)〜[jsch-0.1.50.jar:na]     ...省略了5个常见帧

谢谢, 苏尼

2 个答案:

答案 0 :(得分:3)

我刚刚遇到这个问题,发现我的shell启动脚本破坏了我的sftp会话。

来自http://www.snailbook.com/faq/sftp-corruption.auto.html

为了使其正常工作,SSH会话必须”干净“ - 也就是说,它必须只包含程序在任何一端传输的信息。但是经常发生的事情是是服务器上的系统或每用户shell启动文件中的语句(.bashrc,.profile,/ etc / csh.cshrc,.login等),它们在登录时输出文本消息,供人类阅读(比如命运,回声“你好!”等。这样的代码应该只在交互式登录时产生输出,当标准输入附有tty时。如果它没有进行这个测试,它会将这些文本消息插入它们不属于:在这种情况下,污染scp2 / sftp和sftp-server之间的协议流。文本的前四个字节被解释为一个32位的数据包长度,这通常是一个非常大的数字,激发了上面的错误消息。

一种可能的解决方案是编辑启动脚本。

答案 1 :(得分:-1)

在登录机器期间,它会返回一些文本。如果那些返回的字符串更多sftp会给出错误。

尝试重置您的个人资料文件(.bashrc或.cshrc)或对个人资料档案中的所有回复进行评论。

对我而言,它有效。