Bibliothèque de transfert Java SFTP [fermée]


Je cherche une bibliothèque Java simple morte à utiliser pour les transferts de fichiers SFTP. Je n'ai pas besoin d'autres fonctionnalités au-delà.

J'ai essayé Zehon, mais c'est incroyable naggy, et je pense que 8 fichiers jar est un peu fou pour si peu de fonctionnalités que j'ai besoin.

Et la bibliothèque doit être libre (comme dans free beer), et préférable Open Source (pas une exigence).

Merci.

Author: Valentin Rocher, 2010-02-27

4 answers

Edit: Je vais garder ma réponse précédente, car JSch est toujours utilisé à de nombreux endroits, mais si vous avez besoin d'une bibliothèque mieux documentée, vous pouvez utiliser sshj. Un exemple dans la façon de l'utiliser pour faire sftp est:

SSHClient ssh = new SSHClient();
ssh.loadKnownHosts();
ssh.connect("host");
try {
    ssh.authPassword("username", "password");
    SFTPClient sftp = ssh.newSFTPClient();
    try {
        sftp.put(new FileSystemFile("/path/of/local/file"), "/path/of/ftp/file");
    } finally {
        sftp.close();
    }
} finally {
    ssh.disconnect();
}

En utilisant JSch (une bibliothèque java ssh, utilisée par Ant par exemple), vous pouvez faire quelque chose comme ça:

Session session = null;
Channel channel = null;
try {
    JSch ssh = new JSch();
    ssh.setKnownHosts("/path/of/known_hosts/file");
    session = ssh.getSession("username", "host", 22);
    session.setPassword("password");
    session.connect();
    channel = session.openChannel("sftp");
    channel.connect();
    ChannelSftp sftp = (ChannelSftp) channel;
    sftp.put("/path/of/local/file", "/path/of/ftp/file");
} catch (JSchException e) {
    e.printStackTrace();
} catch (SftpException e) {
    e.printStackTrace();
} finally {
    if (channel != null) {
        channel.disconnect();
    }
    if (session != null) {
        session.disconnect();
    }
}

Voici un autre lien utilisant JSch pour faire SFTP.

Vous pouvez utiliser JSch directement de cette façon, ou via Commons VFS , mais ensuite, vous devrez avoir à la fois commons vfs jar et jsch jar.

 31
Author: Valentin Rocher, 2017-06-05 08:43:48

Voici le code source complet d'un exemple utilisant JSch sans avoir à se soucier de la vérification de la clé ssh.

import com.jcraft.jsch.*;

public class TestJSch {
    public static void main(String args[]) {
        JSch jsch = new JSch();
        Session session = null;
        try {
            session = jsch.getSession("username", "127.0.0.1", 22);
            session.setConfig("StrictHostKeyChecking", "no");
            session.setPassword("password");
            session.connect();

            Channel channel = session.openChannel("sftp");
            channel.connect();
            ChannelSftp sftpChannel = (ChannelSftp) channel;
            sftpChannel.get("remotefile.txt", "localfile.txt");
            sftpChannel.exit();
            session.disconnect();
        } catch (JSchException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        } catch (SftpException e) {
            e.printStackTrace();
        }
    }
}
 6
Author: Iraklis, 2010-04-22 13:02:16

Exit() et disconnect() doivent être placés dans un bloc finally. Dans cet exemple, nous avons un programme sans fin en cas d'exception car un deuxième thread ne se terminera pas.

 3
Author: tg1, 2012-03-13 12:44:21

Que diriez-vous de FTPSClient d'Apache Commons?

 -3
Author: Konrad Garus, 2010-02-27 16:48:51