3

我为 localhost 和下一个代码配置了 CoreFTP:

JSch.setLogger(new MyJschLogger()); //class for console output

Session session = jsch.getSession("user", "localhost", 21);

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

session.setPassword("password");
session.connect();

当程序达到时connect(),控制台输出会出现两条消息:

INFO: Connecting to localhost port 21
INFO: Connection established

......没有更多的事情发生。几分钟后,connection is closed by foreign host出现异常。

为什么?

谢谢大家!

4

2 回答 2

3

端口 21 是FTP的正常端口。JSch 只是一个SSH客户端,在ChannelSFTP类中支持SFTP 。JSch 对 FTP 一无所知(并且 SFTP 与 FTP 无关,除了名称和它允许类似的事情之外)。

您需要将服务器设置为使用 SSH 协议(通常在端口 22 上,但您可以使用任何端口,只要您在客户端上使用相同的端口)。请参阅文档- 我认为您必须选中 SSH 复选框。

此外,如果您的代码只不过是您发布的代码,那么只会发生连接。要传输文件,您需要打开ChannelSFTP并发出正确的命令(例如调用一个或多个 put/get 方法)。

于 2011-06-29T12:03:00.790 回答
0

我也遇到了类似的问题:

"ERROR 2016-04-27 15:05:16,489 [CollectionThreadPool-0] com.dell.supportassist.collector.cli.executor.SSHExecutor: com.jcraft.jsch.JSchException: connection is closed by foreign host"

就我而言,频道随机关闭。当我们尝试重新连接通道时,它没有重新连接并且失败。

这是由于连接时循环逻辑而发生的,因此我尝试通过调用方法connectWithoutOpenChannel而不是connectinternal(). 这解决了我的问题。

于 2016-04-29T12:39:29.007 回答