【问题标题】:JSch session.connect() hungs with CoreFTPJSch session.connect() 与 CoreFTP 挂起
【发布时间】:2011-09-24 22:38:53
【问题描述】:

我已经为 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 异常。

为什么?

谢谢大家!

【问题讨论】:

  • 这里CoreFTP和JSch是什么关系?
  • 啊,你在用coreFTP server吗?

标签: sftp jsch hung


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我也遇到了类似的问题:

    "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() 来连接没有通道的会话。这解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      相关资源
      最近更新 更多