2010-02-12 2 views

답변

5

SFTP 전송에 andFTP을 사용하지만 공개 소스가 아닙니다.

connectBot을 확인할 수 있습니다. sftp transfers에 관한 문제가 있습니다.

+0

안녕 Macarse 는 당신에게 회신을 Thnk. 나는 안드로이드에 connectbolt SSH 오픈 소스 클라이언트를 사용했다. 이제 SFTP를 형성하기 위해 FTP와 connectbolt SSH를 통합 할 수 있는지 묻고 싶습니다. ?? SSH의 내부 구조에 대해 많이 모르고 있다고 생각하는 것이 얼마나 실용적입니까. 미리 감사드립니다. –

+0

나는 그것들을 추가 할 것이라고 생각하지만, 아직 거기에 없다. 문제에 대한 의견을 게시하고 질문하십시오. – Macarse

4

예, edtFTPj/PRO은 Android에서 작동하며 SFTP (FTP 및 FTPS는 물론)를 지원하는 상용 Java 라이브러리입니다.

0

jsch을 사용할 수 있습니다.

Gradle을 :

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

Proguard와는 (나는 대중을 유지하고 경고를 무시 않는 쉬운 솔루션을 과잉 내가하지 여기와 혼란에 선택합니다..). 정확한 해결책을 알고 있다면 알려주세요.

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

코드 :

// 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(); 
} 
관련 문제