当前位置: 首页 > 知识库问答 >
问题:

com.jcraft.jsch.jschException:4:接收的消息太长:1416128878

方宜
2023-03-14

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

我的文件大小是4.4MB。

错误是接收的消息太长

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

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

以下是我如何连接session=jsch.getsession(“##”,“##”,22);session.setpassword(“##”);Session.SetConfig(“StritHostKeyChecking”,“No”);session.connect();sftpChannel=(ChannelSftp)session.openchannel(“sftp”);SFTPChannel.Connect();sftpchannel.cd(“##”);SFTPChannel.LCD(“##”);

错误消息为

从SFTP服务器获取服务器响应时出错。在com.scheduler.datadiarydatapulljob.main(datadiarydatapulljob.java:60)[类/: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]在

谢谢,苏尼尔

共有2个答案

龚玄天
2023-03-14

在登录到计算机时,它返回一些文本。如果返回的字符串较多,sftp将给出错误。

尝试重置您的配置文件(.bashrc或.cshrc)或注释配置文件中的所有回显。

对我来说很管用。

端木震博
2023-03-14

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

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

为了使其正常工作,SSH会话必须是“干净的”--也就是说,它必须只有两端的程序传输的信息。然而,经常发生的情况是,在系统或服务器上的每用户shell启动文件(.bashrc、.profile、/etc/csh.cshrc、.login等)中存在语句,这些语句在登录时输出文本消息,供人阅读(如fortune、echo“Hi there!”等)。当标准输入附加了tty时,这样的代码应该只在交互式登录上产生输出。如果它不做这个测试,它会将这些文本消息插入它们不属于的地方:在这种情况下,污染SCP2/SFTP和SFTP-Server之间的协议流。文本的前四个字节被解释为一个32位的数据包长度,这通常是一个非常大的数字,引起上面的错误消息。“

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

 类似资料:
  • 在使用SocketIO的时候,消息将被作为活动(event)的两端接收。在客户端使用JavaScript回叫信号。使用Flask-SocketIO服务器,需要为这些活动注册处理器(handler),类似于视图函数怎样处理路由。 下面的例子是为一个未命名的活动创建了一个服务端的活动处理器(event handler): @socketio.on('message') def handle_mess

  • 问题内容: 我最近尝试使用sftp访问我的linux机器,在那里我实现了自己的简单外壳。并且我设置了除root用户以外的其他用户默认使用我的shell(通过编辑/ etc / passwd文件)。然后问题出现了,一旦我尝试通过sftp访问,我将收到一条消息:“接收的消息太长:”,我搜索了解决方案,一种解决方案是将该用户的默认shell改回普通的bash shell。我试过了,而且奏效了,问题在于,

  • 我的示例接受google pub/sub,记录它并将ack发送回 配置: NotificationHandler: 线程转储: 行: 但ThreadExecutor未执行deliverMessageTask。 在我看来,它看起来像是库中的一个bug,但可能是库误用。无论如何,我正在寻找任何解决方案/变通办法来避免这种情况。 我使用: spring-boot springCloudVersion=

  • 26.4 接收消息 26.4.1 同步接收 虽然 JMS 通常与异步处理相关,但它也可以同步地消费消息。可重载的receive(..)方法提供了这个功能。在同步接收期间,调用线程阻塞,直到接收到消息。这可能是一个危险的操作,因为调用线程可能无限期地被阻塞。receiveTimeout属性指定了接收者等待消息的超时时间。 26.4.2 异步接收 - 消息驱动的 POJOs Spring 还可以通过使

  • 20.4. 接收消息 20.4.1. 同步接收 虽然JMS一般都和异步处理相关,但它也可以同步的方式使用消息。可重载的receive(..)方法提供了这种功能。在同步接收中,接收线程被阻塞直至获得一个消息,有可能出现线程被无限阻塞的危险情况。属性receiveTimeout指定了接收器可等待消息的延时时间。 20.4.2. 异步接收 - 消息驱动的POJOs 类似于EJB世界里流行的消息驱动bea