I am working on my latest codefish android app which utilises Jsch to send files over SFTP. I couldn’t find a complete example of creating an SFTP connection using a password so I thought I’d post one.

Here is the code:

``` {.js name=”code”} import java.io.File; import java.util.Properties; import java.util.Vector;

import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.ChannelSftp.LsEntry; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session;

public class ConnectWithPass {

public static void main(String[] args) throws Exception {
    
    if (args.length < 3) {
        throw new Exception("not enough arguments");
    }
    
    String serverUrl = args[0];
    String userName = args[1];
    String password = args[2];
    
    JSch jsch = new JSch();
    
    Properties config = new Properties();
    config.put("StrictHostKeyChecking", "no");
    config.put("compression.s2c", "zlib,none");
    config.put("compression.c2s", "zlib,none");
    
    Session session = jsch.getSession(userName, serverUrl);
    session.setConfig(config);
    session.setPort(22);
    session.setPassword(password);
    session.connect();
    
    ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
    channel.connect();

    @SuppressWarnings("unchecked")
    final Vector files = channel.ls(".");
    for (LsEntry obj : files) {
        System.out.println(obj.toString());
    }   
    
    channel.disconnect();
    session.disconnect();
}

} ```

The code creates a connection with a password and then performs an ls command to list all the files in the server’s base directory.

Thanks to my workmate @carlbunting for help with the code.

note: jsch.jar and jzlib.jar are the required libraries to get this example to work

Matt

 

Matt Reid

Lead Software Architect. Java/Node enthusiast, badminton lover, foodie.

drei01 Matthew_Reid


Published