Java JSch导致数据包大小超过允许的最大错误
我试图使用JSch类(;JSch-0.1.50.jar)连接到SFTP服务器,并从ColdFusion(9.0.2)应用程序(在Java 1.7.0_15上运行)中发送文件。有关的基本守则是: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 = 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连接发送了某种纯文本消息。可能发生的事情很少:
ssh
命令行实用程序,则可以使用该实用程序查看服务器正在发送什么。像这样运行:
$ ssh myusername@ftp.example.com -s sftp
这将向远程服务器打开一个普通SSH会话,并请求SFTP子系统,这与SFTP客户端所做的相同。如果服务器正确启动了SFTP,您将看不到此命令的任何输出——它将一直等到您将其杀死。如果您看到来自远程服务器的任何文本,这就是问题所在。您需要找出服务器发送该文本的原因并加以阻止。请检查这是否有帮助-感谢您尝试回答这个老问题。我最终使用了完全不同的解决方案,但在本例中,错误出现在服务器端,而不是客户端。我能够与任何其他SCP客户端连接到服务器,这排除了服务器端的问题,只有这个客户端库会抛出一些不应该抛出的东西,所以我放弃了,而是编写了WinSCP脚本。