Saltar al contenido

¿Cómo recuperar un archivo de un servidor a través de SFTP?

Bienvenido a nuestro sitio, ahora hallarás la solucíon a lo que buscabas.

Solución:

Otra opción es considerar buscar en la biblioteca JSch. JSch parece ser la biblioteca preferida para algunos grandes proyectos de código abierto, incluidos Eclipse, Ant y Apache Commons HttpClient, entre otros.

Es compatible con los inicios de sesión de usuario/pase y basados ​​en certificados, así como toda una serie de otras características deliciosas de SSH2.

Aquí hay una recuperación remota simple de archivos a través de SFTP. El manejo de errores se deja como ejercicio para el lector 🙂

JSch jsch = new JSch();

String knownHostsFilename = "/home/username/.ssh/known_hosts";
jsch.setKnownHosts( knownHostsFilename );

Session session = jsch.getSession( "remote-username", "remote-host" );    

  // "interactive" version
  // can selectively update specified known_hosts file 
  // need to implement UserInfo interface
  // MyUserInfo is a swing implementation provided in 
  //  examples/Sftp.java in the JSch dist
  UserInfo ui = new MyUserInfo();
  session.setUserInfo(ui);

  // OR non-interactive version. Relies in host key being in known-hosts file
  session.setPassword( "remote-password" );


session.connect();

Channel channel = session.openChannel( "sftp" );
channel.connect();

ChannelSftp sftpChannel = (ChannelSftp) channel;

sftpChannel.get("remote-file", "local-file" );
// OR
InputStream in = sftpChannel.get( "remote-file" );
  // process inputstream as needed

sftpChannel.exit();
session.disconnect();

Aquí está el código fuente completo de un ejemplo usando JSch sin tener que preocuparse por el ssh key comprobación.

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();  
         catch (SftpException e) 
            e.printStackTrace();
        
    

A continuación se muestra un ejemplo utilizando Apache Common VFS:

FileSystemOptions fsOptions = new FileSystemOptions();
SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(fsOptions, "no");
FileSystemManager fsManager = VFS.getManager();
String uri = "sftp://user:[email protected]:port/absolute-path";
FileObject fo = fsManager.resolveFile(uri, fsOptions);

Reseñas y valoraciones

Tienes la opción de añadir valor a nuestra información asistiendo con tu experiencia en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *