java - 如何使用 ftp4j 通过 sftp 连接到 linux

标签 java linux ssl ftp

我在使用ftp4j时遇到这个问题:

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

FTP 服务器已启用端口 22 上的连接,我可以毫无问题地连接 filezilla。

这是我的代码:

 private boolean copiarArchviosFtp(){

    FTPClient ftpDestino=new FTPClient();

    try{
        TrustManager[] trustManager = new TrustManager[] { new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
            public void checkClientTrusted(X509Certificate[] certs, String authType) {
            }
            public void checkServerTrusted(X509Certificate[] certs, String authType) {
            }
        } };
        SSLContext sslContext = null;
        try {
            sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustManager, new SecureRandom());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (KeyManagementException e) {
            e.printStackTrace();
        }
        SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

        ftpDestino.setSSLSocketFactory(sslSocketFactory);
        ftpDestino.setSecurity(FTPClient.SECURITY_FTPS);

        ftpDestino.connect("172.24.1.109",22);
        ftpDestino.login("user","password");
        ftpDestino.changeDirectory("/home/");


        FTPFile[] listFilte=ftpDestino.list();
        for(FTPFile ftpFile:listFilte){
            System.out.println("nameFile: "+ftpFile.getName());
        }

    }
    catch(Exception e){
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return false;
}

知道如何解决这个问题吗?

最佳答案

我正在研究如何通过 SFTP 复制文件。即使指定了 FTPClient.SECURITY_FTPS,ftp4j 库也无法工作,因为 FTPS 与 SFTP 不同。

我找到了使用另一个名为 JSCH 的库的解决方案。

这里是 JSCH 的示例。我希望这对某人有帮助。

这里是more informationSFTP vs FTPS .

关于java - 如何使用 ftp4j 通过 sftp 连接到 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13495969/

相关文章:

java - 方法调用 'fab.setOnClickListener(new View.OnClickListener() { @Override public void on...' 可能产生 'java.lang.NullPointerException'

c - 将 C + Makefile 导入 linux IDE?

linux - 保持集群中的多个服务器同步?

wordpress - 带有嵌套 WordPress 博客的 ELB 后面的 EC2 上的 SSL 问题

java - Google reCaptcha 验证握手异常

Tomcat 不提示 Web 应用程序证书 (OpenAM)

java - Spring security ApplicationListener 不会被 AuthenticationSuccessEvent 调用

javascript - 了解 CryptoCompare 流数据

java - 用于在 Java 中从数组中查找 2 个最小值的库头

linux - 我怎样才能从文件中删除一些东西?