En este artículo vamos a ver como podemos conectarnos a un servidor SSH en Java. Para ello, mostrarmos como conectarse a un servidor SFTP, subir, descargar y eliminar ficheros utilizando la librería JSch.
SSH
SSH es un protocolo de red que utiliza cifrado, de forma que consigue ser seguro en un entorno inseguro.
JSCH
JSch es una librería escrita en Java que implementa SSH2. JSch permite conectarse a un servidor SSH y utilizar redirección de puertos, transferencia de ficheros, etc. A partir de la versión 1.4 de J2SE, solo es necesario añadir la dependencia para poder trabajar con JSch. Para ello nos descargaremos el jar desde aquí o añadimos la siguiente dependencia a nuestro proyecto.
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.53</version> </dependency>
Realizar la conexión al servidor
Para conectarnos al servidor SFTP necesitaremos la ip o dirección del servidor, el puerto (que será el 22), el nombre de usuario y la contraseña. Mediante el siguiente código podemos realizar la conexión:
JSch jsch = new JSch(); try { Session session = jsch.getSession("user","host",22); session.setConfig("PreferredAuthentications", "password"); session.setConfig("StrictHostKeyChecking", "no"); session.setPassword("pass"); session.connect(); Channel channel = session.openChannel("sftp"); ChannelSftp sftp = (ChannelSftp) channel; sftp.connect(); } catch (JSchException e) { System.out.println("No se pudo realizar la conexión"); }
Una vez realizada la conexión, ya podemos realizar la transferencia de ficheros.
Transferencia de ficheros
El siguiente código sirve para subir un fichero al servidor:
try { File file = new File("pathSistema"); InputStream inputStream = new FileInputStream(file); sftp.put(inputStream,file.getName()); inputStream.close(); } catch (SftpException e) { System.out.println("No se pudo subir el fichero"); } catch (IOException e) { System.out.println("No se pudo crear el fichero"); }
Para descargar el fichero, solo necesitamos su nombre:
try { InputStream is = sftp.get("nombreFicheroRemoto"); } catch (SftpException e) { System.out.println("No se pudo descargar el fichero"); }
Finalmente, para eliminar el fichero también debemos pasarle su nombre:
try { sftp.rm("nombreFicheroRemoto"); } catch (SftpException e) { System.out.println("No se pudo eliminar el fichero"); }
Esto ha sido todo. Así de simple es trabajar en Java con un servidor SSH gracias a la libraría JSch. Espero que os sea útil este artículo y recordar que cualquier duda o problema podéis dejarlo en los comentarios.
El artículo Como conectarse a un servidor SFTP en Java apareció por primera vez en Instinto Binario.