2

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;
}

この問題をどのように解決するかについてのアイデアはありますか?

4

1 に答える 1

2

SFTPでファイルをコピーする方法を調査しています。FTPSはSFTPとは異なるため、FTPClient.SECURITY_FTPSを指定してもftp4jライブラリは機能しませんでした。

JSCHという別のライブラリを使用して解決策を見つけました。

これがJSCHの例です。これが誰かに役立つことを願っています。

SFTPとFTPSの詳細についてはこちらをご覧ください

于 2012-12-06T01:29:36.437 に答える