2017-12-11 11 views
0

Ich habe einen Java-Code geschrieben (mit Apache common vfs2), um Dateien auf den SFTP-Server hochzuladen. Kürzlich habe ich PGP Security auf meinem Server eingeführt. Jetzt kann der Java-Code keine Verbindung zu diesem Server herstellen. Die Verbindung mit FileZilla ist erfolgreich. Wir verwenden CrushFTP auf dem Server und apache-common-vfs2 in der Java-Anwendung. Hier ist der Code-SnippetVerbindung zum SFTP-Server nicht möglich. Apache common

String originalFileName = localFile.getName(); 
manager.init(); 
FileObject fileToUpload = manager.resolveFile(localFile.getAbsolutePath()); 

// Create remote file object 
FileObject remoteFile = manager.resolveFile(
       createConnectionString(originalFileName), 
       createDefaultFileSystemOptions()); 

remoteFile.copyFrom(fileToUpload, Selectors.SELECT_SELF); 

Methoden

public String createConnectionString(String fileName) { 
    String path = "sftp://" + username + ":" + password + "@" + server +workingDir+"/"+fileName; 
    logger.info("uploading file at "+path); 
    return path; 
} 

public static FileSystemOptions createDefaultFileSystemOptions() 
          throws FileSystemException { 
    // Create SFTP options 
    FileSystemOptions opts = new FileSystemOptions(); 

    // SSH Key checking 
    SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no"); 

    // Root directory set to user home 
    SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, false); 

    // Timeout is count by Milliseconds 
    SftpFileSystemConfigBuilder.getInstance().setTimeout(opts, 10000); 
    return opts; 
} 

Die Ausnahme wie folgt ist

Caused by: org.apache.commons.vfs2.FileSystemException: Could not connect to SFTP server at "192.168.13.102". 
    at org.apache.commons.vfs2.provider.sftp.SftpClientFactory.createConnection(SftpClientFactory.java:170) 
    at org.apache.commons.vfs2.provider.sftp.SftpFileProvider.doCreateFileSystem(SftpFileProvider.java:97) 
    ... 16 more 
Caused by: com.jcraft.jsch.JSchException: Session.connect: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive) 
    at com.jcraft.jsch.Session.connect(Session.java:565) 

Anoney bitte Lösung vorschlagen?

+0

SFTP unterstützt das OpenPGP-Protokoll überhaupt nicht, es stützt sich stattdessen auf den TLS-Standard. Sie könnten OpenPGP-verschlüsselte Dateien als Payload über einen SFTP-Kanal übertragen, der mit TLS verschlüsselt ist (was bedeutet, dass Sie Twize verschlüsseln), aber die SFTP-Übertragung hat überhaupt nichts mit OpenPGP zu tun. –

Antwort

1

Die Fehlermeldung zeigt an, dass Sie Java release older than 1.8 und Diffie-Hellman Parameter verwenden, die größer als 1024 Bit sind. Aktualisieren Sie entweder die JDK-Version auf 1.8 oder höher oder begrenzen Sie die 1024-Bit-Diffie-Hellman-Parameter auf der Serverseite (die Vorgehensweise hängt von der verwendeten Serversoftware ab, und die Serverkonfiguration wird besser unter Server Fault abgearbeitet).

Verwandte Themen