net libreria library jcraft ftpsclient example commons common java ftp ssh

libreria - sftp library java



Biblioteca de transferencia de Java SFTP (4)

Estoy buscando una biblioteca Java muerta simple para usar para transferencias de archivos SFTP. No necesito otras características más allá de eso.

He probado Zehon, pero es increíble, y creo que 8 archivos jar es un poco loco por la poca funcionalidad que necesito.

Y la biblioteca debe ser gratuita (como en cerveza gratis), y preferiblemente de código abierto (no es un requisito).

Gracias.



Aquí está el código fuente completo de un ejemplo usando JSch sin tener que preocuparse por la verificación de la clave 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(); } } }


La salida () y la desconexión () deben colocarse en un bloque finally. En este ejemplo, tenemos un programa interminable en caso de una excepción porque un segundo hilo no terminará.


Editar: Voy a mantener mi respuesta anterior, ya que JSch todavía se usa en muchos lugares, pero si necesita una biblioteca mejor documentada, puede usar sshj . Un ejemplo de cómo usarlo para hacer sftp es:

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

Usando JSch (una java ssh lib, usada por Ant por ejemplo), podrías hacer algo como eso:

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

Aquí hay otro enlace usando JSch para hacer SFTP.

Puede usar JSch directamente de esta manera, o a través de Commons VFS , pero luego tendrá que tener los dos jar comunes vfs jar y jsch.