当前位置: 首页 > 知识库问答 >
问题:

JSCH:SFTP。使用端口21在session.connect()挂起

邴修远
2023-03-14

我正在通过sftp(JSCH)连接到FTP服务器。

每当我使用端口21连接到FTP服务器时,它总是挂起session.connect()。

它不会引发任何异常。但当我使用其他端口时。它工作并且抛出异常。

下面是我的代码示例。

public static void main(String[] args) throws SftpException {

    JSch jsch = new JSch();

    try {

        Session session = jsch.getSession("username", "host", 21);
        session.setConfig("StrictHostKeyChecking", "no");
        session.setPassword("password");
        session.connect();

        Channel channel = session.openChannel("sftp");
        channel.connect();
        ChannelSftp channelSftp = (ChannelSftp) channel;
        session.disconnect();
        channelSftp.disconnect();

    } catch (JSchException e) {
        log("Cannot make connection to FTP server ");
        e.printStackTrace();

    }

}

共有1个答案

夔博
2023-03-14

会不会是端口22是SFTP的默认端口?并且在端口21上运行的FTP服务器将不知道如何协商安全FTP的会话。基本上,SFTP就是SSH上的FTP。

问题是,它无限期地等待谈判的完成。这是一场墨西哥对峙,双方都没有放弃。在session.connect()之前调用session.settimeout(),或调用session.connect(timeout),使用适当的值(3-5秒)。我相信超时是以毫秒为单位的。

 类似资料:
  • 我是Jsch的新手,我正在尝试通过SFTP连接到第三方。我可以通过ssh连接,因此我知道我有正确的用户、主机、端口和私钥文件,但当我尝试通过Jsch连接时,我得到异常消息“auth failed”,这几乎是有用的,但不是很有用。下面是我从网上的例子中拼凑出来的代码: 我添加了一些日志,这样我就知道失败是以session.connect()的形式发生的。我捕获了用户和connectionURL并验证

  • AngularJS设置了下面这些CSS类名,你可以方便地用来给你的应用添加样式。 AngularJS使用的CSS类名 ng-invalid, ng-valid 当元素中的输入值没有通过验证时,AngularJS会将这个类名加入到元素上。(参考input指令)。 ng-pristine, ng-dirty input指令会给新的widget中的input元素(没有用户交互过)添加ng-pristin

  • 问题内容: 我正在尝试创建一个Java Application Client项目,该项目将JMS消息发送到Glassfish服务器上的队列。 问题在于,应用发送完消息后,它在应退出时挂起。该消息已成功传输,但是由于某种原因该应用程序没有退出。我已经尝试调试该应用程序,并且可以将其一直走到的结尾,这就是它的挂起位置。 这是代码: 如何使其停止挂起? 问题答案: 长期以来,它一直是Glassfish中

  • Spring靴:1.4.0.M1 我有一个IIS在端口80上运行,但是我已经通过STS配置属性将Sever.port更改为8090。STS屏幕快照 为什么STS embedded tomcat在更改后仍使用端口80?有点迷惑。

  • 端口80正在使用中,所以我想知道如何才能杀死在端口80上运行的进程。

  • 这是一个关于Storm的max spout pending如何工作的问题。我目前有一个spout读取一个文件,并为文件中的每一行发出一个元组(我知道Storm不是处理文件的最佳解决方案,但对于这个问题我没有选择)。 我将设置为50K,以限制进入要处理的拓扑的元组数量。然而,我看到这个数字在拓扑中没有任何影响。我每次都看到一个文件中的所有记录被发出。我猜测这可能是由于方法中的循环所致,该方法发出文件