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?
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. –