You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

上传大文件至Apache SSHD SFTP服务器时出现Outbound message too long错误

问题解决:Linux SFTP客户端向Apache SSHD服务器传大文件报"Outbound message too long"

问题背景

使用Linux原生SFTP客户端向基于mina-sshd 2.10.0搭建的SFTP服务器上传≥500KB文件时,触发错误:Outbound message too long 262197。但该服务器与FileZilla配合正常,且此客户端可向其他SFTP服务器正常上传大文件。根据代码逻辑,此错误是客户端输出缓冲区超过256KB上限时触发的。

可能原因

该问题源于客户端与mina-sshd服务器的SFTP窗口/数据包大小协商不匹配:

  • mina-sshd默认的SFTP子系统窗口大小或数据包配置较保守,导致客户端需要一次性发送超过自身缓冲区限制的数据块
  • 其他SFTP服务器(如OpenSSH)默认配置更适配Linux客户端的缓冲区设置,FileZilla则采用了自适应的块大小策略

解决方案

1. 调整Linux SFTP客户端的发送缓冲区

临时测试可直接在命令行指定:

sftp -o SendBuf=524288 user@your-server-ip

永久生效可修改SSH配置(全局/etc/ssh/ssh_config或用户目录~/.ssh/config):

Host your-sftp-server
    SendBuf 524288

将缓冲区设置为512KB(或更大),覆盖客户端默认的256KB限制。

2. 调整mina-sshd的SFTP子系统窗口大小

修改服务器代码中SFTP子系统的配置,增大窗口大小:

SftpSubsystemFactory sftpFactory = new SftpSubsystemFactory();
// 设置1MB的SFTP窗口大小,允许服务器接受更多未确认数据
sftpFactory.getSftpSettings().setSftpWindowSize(1024 * 1024);
sshd.setSubsystemFactories(Collections.singletonList(sftpFactory.build()));

这样客户端无需一次性发送过大的数据块即可完成上传。

3. 限制mina-sshd的最大数据包大小

强制服务器的最大数据包大小与客户端缓冲区上限匹配:

sftpFactory.getSftpSettings().setMaxPacketSize(256 * 1024); // 256KB

确保客户端发送的数据块不会超过自身缓冲区限制。

内容的提问来源于stack exchange,提问作者Jonny Marotte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:08:06