Java JSch导致数据包大小超过允许的最大错误

Java JSch导致数据包大小超过允许的最大错误,java,coldfusion,ssh,jsch,Java,Coldfusion,Ssh,Jsch,我试图使用JSch类(;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

我试图使用JSch类(;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然后关闭会话,此时JSch抛出异常:

Session.connect: java.io.IOException: End of IO Stream Read
我是JSch类的新手,可能遗漏了一些明显的东西,但我不知道错误可能在哪里。使用WinSCP从同一来源连接到同一SFTP服务器不会出现错误。关于代码哪里出错或下一步在哪里进行故障排除有什么提示吗

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

  • 服务器上的.bashrc、.bash_配置文件或类似shell配置文件已设置为打印某些消息
  • 服务器配置不当,正在发送某种问候语
  • 服务器正在发送某种错误消息
  • 如果您有权访问
    ssh
    命令行实用程序,则可以使用该实用程序查看服务器正在发送什么。像这样运行:

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

    这将向远程服务器打开一个普通SSH会话,并请求SFTP子系统,这与SFTP客户端所做的相同。如果服务器正确启动了SFTP,您将看不到此命令的任何输出——它将一直等到您将其杀死。如果您看到来自远程服务器的任何文本,这就是问题所在。您需要找出服务器发送该文本的原因并加以阻止。

    请检查这是否有帮助-感谢您尝试回答这个老问题。我最终使用了完全不同的解决方案,但在本例中,错误出现在服务器端,而不是客户端。我能够与任何其他SCP客户端连接到服务器,这排除了服务器端的问题,只有这个客户端库会抛出一些不应该抛出的东西,所以我放弃了,而是编写了WinSCP脚本。