2010-02-12 4 views

Antwort

5

Ich verwende andFTP für sftp Übertragungen, aber es ist nicht Open Source.

Sie können überprüfen connectBot. Es gibt ein Problem mit sftp transfers.

+0

Hallo Macarse Thnk Sie Ihre Antwort. Ich ging durch SSH Open Source Client connectbolt auf Android. Jetzt möchte ich fragen, ob ich FTP und connectbolt SSH integrieren kann, um mein SFTP zu bilden ?? Wie viel machbar wäre es, wenn man bedenkt, dass ich nicht viel von SSH Interna weiß. Vielen Dank im Voraus. –

+0

Ich denke, sie werden es hinzufügen, aber es ist noch nicht da. Veröffentlichen Sie einen Kommentar zu dem Problem und fragen Sie sie. – Macarse

4

Ja, edtFTPj/PRO ist eine kommerzielle Java-Bibliothek, die auf Android funktioniert und SFTP (sowie FTP und FTPS) unterstützt.

0

Sie können jsch verwenden.

Gradle:

compile group: 'com.jcraft', name: 'jsch', version: '0.1.54' 

Proguard (ich es behalte öffentliche und Warnungen ignoriert Einfache Lösung, Overkill ich wähle nicht mit ihm hier zu verwirren..). Wenn Sie die richtige Lösung kennen - lassen Sie es mich wissen.

-keep class com.jcraft.jsch.jce.* 
-keep class * extends com.jcraft.jsch.KeyExchange 
-keep class com.jcraft.jsch.** 
-keep class com.jcraft.jzlib.** 
-keep class com.jcraft.jsch.jce.* 
-keep class com.jcraft.jzlib.ZStream 
-keep class com.jcraft.jsch.Compression 
-keep class org.ietf.jgss.* 
-dontwarn org.ietf.jgss.** 
-dontwarn com.jcraft.jsch.** 

Code:

// add correct exception-handling; remember to close connection in all cases 
public void doUpload(String host, String user, String password, String folder, int port, File file){ 
    JSch jsch = new JSch(); 

    Session session = jsch.getSession(user, host, port); 
    session.setPassword(password); 

    java.util.Properties config = new java.util.Properties(); 
    //Don't do it on Production -- makes it MITM-vulnerable 
    config.put("StrictHostKeyChecking", "no"); 
    session.setConfig(config); 
    session.setTimeout(5000); 
    session.setConfig("PreferredAuthentications", "password"); 
    session.connect(); 

    Channel channel = session.openChannel("sftp"); 
    channel.connect(); 
    ChannelSftp channelSftp = (ChannelSftp) channel; 

    String home = channelSftp.getHome(); 
    if (folder == null || folder.length() == 0 || "/".equals(folder)) { 
     folder = home; 
    } else { 
     File file = new File(new File(home), folder); 
     folder = file.getPath(); 
    } 
    channelSftp.cd(folder); 

    try (BufferedInputStream buffIn = new BufferedInputStream(new FileInputStream(file.getPath()))) { 
     ProgressInputStream progressInput = new ProgressInputStream(buffIn, progressListener, file.length()); 
     channelSftp.put(progressInput, file.getName()); 
    } 

    channelSftp.disconnect(); 
    session.disconnect(); 
} 
Verwandte Themen