¿Qué es SFTP? Funciones GET y PUT.

¡Hola, coders!

Tal y como dije en Twitter este mes no iba a tener mucho tiempo para subir un vídeo al canal así que lo compenso escribiendo una entrada interesante aquí en el blog acerca con lo que he estado trabajando este último mes.


¿Qué es SFTP?

Viene de las siglas SSH File Transfer Protocol. Es un protocolo que permite transferir archivos a través de conexiones SSH.


¿Cómo es su uso en Java?

Usando librerías externas. La más popular y la más utilizada en este lenguaje de programación es JSch (Java Secure Channel).

Imports más comunes con el uso de la librería:

import com.jcraft.jsch.ChannelExec;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.JSchException;

import com.jcraft.jsch.Session;

import com.jcraft.jsch.SftpException;


Aquí una lista de pasos:

1) Establecer conexión con el servidor usando usuario, contraseña, puerto y host.

session = jsch.getSession(sesionRequerida, ipSesion, puertoSesion);

                session.setPassword(contrasenaSesion);

                session.setConfig("StrictHostKeyChecking", "no");

                session.setConfig("PreferredAuthentications", "password");


                // Establece un timeout en la conexión

                session.setTimeout(10000);


                // Conecta la sesión

                session.connect();


2) Abrir un canal SFTP.

 // Abre el canal SFTP

                    channelSftp = (ChannelSftp) session.openChannel("sftp");

                    channelSftp.connect();


3) Usar comandos GET y PUT.

-GET: Descarga un archivo desde el servidor SFTP a tu máquina local.

-PUT: Sube un archivo desde tu máquina local al servidor SFTP.




4) Cerrar conexiones.


Ejemplo global de código Java:

import com.jcraft.jsch.*;


public class SFTPExample {

    public static void main(String[] args) {

        String user = "usuario";

        String host = "sftp.ejemplo.com";

       // Este es el puerto por defecto para las conexiones SFTP.

        int port = 22; 

        String password = "contraseña";


        Session session = null;

        Channel channel = null;


        try {

            JSch jsch = new JSch();

            session = jsch.getSession(user, host, port);

            session.setPassword(password);

            session.setConfig("StrictHostKeyChecking", "no");

            session.connect();


            channel = session.openChannel("sftp");

            channel.connect();

            ChannelSftp sftp = (ChannelSftp) channel;


            // PUT: subir archivo

            sftp.put("local.txt", "/remoto/servidor.txt");


            // GET: descargar archivo

            sftp.get("/remoto/otro.txt", "local_recibido.txt");


            sftp.exit();

            session.disconnect();


        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}


Y esto sería todo, si tenéis planeado desarrollar una aplicación que haga una transferencia de archivos espero que esta entrada pueda servir de ayuda.

Lo dicho, para el mes que viene empezaré a traer más vídeos al canal.

¡Nos leemos en mi próxima entrada!

Comentarios

Entradas populares de este blog

Hablemos de los lenguajes "Basic".

Hablemos del próximo material y de JavaFX.

¿Qué es Radzen?