使用 jsch 到 ftps 到大型机计算机 - 无法连接 - 但 Filezilla 工作

Posted

技术标签:

【中文标题】使用 jsch 到 ftps 到大型机计算机 - 无法连接 - 但 Filezilla 工作【英文标题】:Using jsch to ftps to a Mainframe computer - fails to connect - but Filezilla works 【发布时间】:2017-07-10 18:32:27 【问题描述】:

错误信息是

com.jcraft.jsch.JSchException:Session.connect:java.net.SocketException:软件导致连接中止:recv 失败

Put 文件错误:下一步尝试连接

   public void putFileWithPassword(String inputFileName, 
        String outputFileName, String host, int port, 
        String path, String user, String pswd) throws Exception
    say("putFileWithPassword " + outputFileName + " " + host + " " + port + " " + user + " " + pswd);
    JSch jSch = new JSch();  
    Session session = jSch.getSession(user, host, port);
    Properties config = new Properties();
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);
    session.setPassword(pswd);
    response = "next step try connecting"+ " " + host + ":" + port + " " + user+" " + pswd;
    // WHAT ABOUT TLS CERTIFICATES?
    session.connect();
    response = "next step channel open";    

要使用 Filezilla 连接和传输,我们设置传输类型 = ASCII,设置活动模式,并在文件名周围使用单引号将文件放置在大型机上的正确位置。

我已经阅读了 ***.com 中几乎所有当前的问题和答案,但没有任何成功。我在想我可能需要使用 TLS 证书,不管它们是什么。此外,jcraft.com 网站似乎不可用。

【问题讨论】:

您不应该改用 PASV 吗? Active 表示数据连接是由 SERVER 发起的,它不会通过大多数防火墙。 【参考方案1】:

JSch 是 SFTP/SSH 库。

虽然 FTPS、主动模式、TLS 证书都是与 FTP(S) 协议一起使用的术语,但完全不同。

见:

How to connect to FTP over TLS/SSL (FTPS) server in Java Secure FTP with org.apache.commons.net.ftp.FTPClient

【讨论】:

我知道你想说什么,但我认为关键部分有点隐藏:你不能使用 SFPT 客户端连接到 FTPS 服务器,因为两者完全不同协议。

以上是关于使用 jsch 到 ftps 到大型机计算机 - 无法连接 - 但 Filezilla 工作的主要内容,如果未能解决你的问题,请参考以下文章

JSch SFTP 可以支持 lrecl 或 blksize 等站点命令吗

如何通过 SFTP 从服务器检索文件?

将文件作为 TAPE 数据集 SFTP 到大型机

使用基于 android studio 构建的 android 应用程序进行 Jsch X11 转发

JSch SFTP 放入 IBM z/OS 失败:无法写入文件;嵌套异常为 3:权限被拒绝

从 Spark 服务器执行 SFTP 时,大型机服务器上的记录级别数据截断