gpt4 book ai didi

java - JSch 导致数据包大小超过最大允许错误

转载 作者:搜寻专家 更新时间:2023-11-01 03:53:29 25 4
gpt4 key购买 nike

我正在尝试使用 JSch 类(Java Secure Channel;jsch-0.1.50.jar)连接到 SFTP 服务器并从 ColdFusion (9.0.2) 应用程序(在 Java 1.7 上运行)中发送文件.0_15)。有问题的基本代码是:

jsch = classLoader.create("com.jcraft.jsch.JSch").init(); // ColdFusion-specific to load the jar
jschSession = jsch.getSession("myusername", "ftp.example.com", 22);
jschSession.setConfig("StrictHostKeyChecking", "no");
jschSession.setTimeout(60000);
jschSession.setPassword("mypassword");
jschSession.connect();

连接到 Serv-U SFTP 服务器后,在连接打开后立即在 Serv-U 端给我以下错误:

SSH Protocol Error: packet size exceeds maximum allowed.

然后 Serv-U 关闭 session ,此时 JSch 抛出异常:

Session.connect: java.io.IOException: End of IO Stream Read

我是 JSch 类的新手,可能我遗漏了一些明显的东西,但我不知道错误可能出在哪里。使用 WinSCP 从同一来源连接到同一 SFTP 服务器不会出现任何错误。关于代码做错了什么或下一步应该去哪里进行故障排除的任何提示?

最佳答案

SSH Protocol Error: packet size exceeds maximum allowed

这意味着本地客户端从远程服务器接收到一些未正确格式化为 SFTP 协议(protocol)消息的数据。通常的原因是服务器通过 SSH 连接发送了某种纯文本消息。可能发生的事情很少:

  1. 服务器上的 .bashrc、.bash_profile 或类似的 shell 配置文件设置为打印一些消息。
  2. 服务器配置不当,正在发送某种问候语。
  3. 服务器正在发送某种错误消息。

如果您有权访问 ssh 命令行实用程序,您可以使用它来查看服务器发送的内容。运行这样的东西:

$ ssh myusername@ftp.example.com -s sftp

这将打开到远程服务器的纯 SSH session 并请求 SFTP 子系统,这与 SFTP 客户端所做的事情相同。如果服务器正确启动 SFTP,您将不会看到此命令的任何输出——它只会等到您终止它。如果您看到来自远程服务器的任何文本,那就是问题所在。您需要找出服务器发送该文本的原因并阻止它。

关于java - JSch 导致数据包大小超过最大允许错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com