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

 lovely--蕙蕙_868 发布于 2023-02-11 10:00

我通过sftp(JSCH)连接到FTP服务器.

Evertime我使用端口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();

    }

}

小智.. 10

我有一个类似的问题,但有正确的端口.session.connect()只是挂起并且不返回任何内容.而其他程序可以成功连接.

原因是主机提供了更多的身份验证方法,我们必须指出Jsch只使用密码.

        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        config.put("PreferredAuthentications", "password");
        session.setConfig(config);


brettw.. 6

可能是端口22是SFTP的默认端口吗?并且在端口21上运行的FTP服务器将不知道如何协商对话以获得安全的FTP.基本上,SFTP是基于SSH的FTP.

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

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有