2010-02-12 14 views

Respuesta

5

Uso andFTP para las transferencias de sftp pero no es de código abierto.

Puede marcar connectBot. Hay un problema sobre sftp transfers.

+0

Hola Macarse que THNK su respuesta. Pasé por el cliente de código abierto SSH de connectbolt en android. ¿Ahora quiero preguntar si puedo integrar FTP y connectbolt SSH para formar mi SFTP? ¿Qué tan factible sería teniendo en cuenta que no sé mucho de los aspectos internos de SSH. Gracias de antemano. –

+0

Creo que lo van a agregar, pero aún no está allí. Publique un comentario sobre el tema y solicítelo. – Macarse

4

Sí, edtFTPj/PRO es una biblioteca comercial de Java que funciona en Android y es compatible con SFTP (además de FTP y FTPS).

0

Puede usar jsch.

Gradle:

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

Proguard (I do mantenerlo pública e ignorar las advertencias solución fácil, una exageración decido no meterse con él aquí..). Si conoce la solución correcta, hágamelo saber.

-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.** 

código:

// 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(); 
} 
Cuestiones relacionadas