La guía paso a paso o código que encontrarás en este artículo es la resolución más sencilla y efectiva que hallamos a tu duda o dilema.
Solución:
Puede usar este fragmento de código para copiar archivos a otro linux
máquina.
JSch jsch = new JSch();
Session session = null;
session = jsch.getSession("username","hostname",22);
session.setPassword("password");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
ChannelSftp channel = null;
channel = (ChannelSftp)session.openChannel("sftp");
channel.connect();
File localFile = new File("localfilepath");
//If you want you can change the directory using the following line.
channel.cd(RemoteDirectoryPath)
channel.put(new FileInputStream(localFile),localFile.getName());
channel.disconnect();
session.disconnect();
con eso he agregado mi publico key al sistema remoto, generado usando ssh-keygen
.Así que no te pedirá la contraseña cada vez que ejecutes el programa.
Copiar un archivo de un host a otro requiere un demonio en el host remoto, implementando algún protocolo de transmisión de archivos a nivel de aplicación. Este es un requisito sin importar desde qué idioma vaya a hablar con ese demonio remoto.
Sus opciones para los sistemas Linux son:
- SSH. Esto requiere un demonio SSH (por ejemplo, openssh-server) en el lado remoto. Debido a que ssh está diseñado para la seguridad, deberá configurar el host remoto para que lo autentique con una contraseña o un privado. key. En realidad, la copia del archivo se puede hacer a través de la utilidad scp o la biblioteca del cliente ssh (jsch sería un ejemplo de ello).
- NFS. El host remoto instala un demonio (por ejemplo, samba) y comparte algunos archivos. Su computadora local (el paquete cifs-utils es capaz de eso) puede montar una ubicación remota en el sistema de archivos local. De esta forma, puede copiar un archivo en el host remoto simplemente copiando el archivo localmente. La autenticación es opcional, los archivos se envían sin formato a través de la red.
- FTP. Un servidor ftp está instalado en el lado remoto y configurado para permitir el acceso a ciertas ubicaciones para ciertos usuarios. Luego puede usar cualquier cliente ftp o alguna biblioteca de cliente ftp (biblioteca commons-net del proyecto Apache, por ejemplo) para conectarse al servidor ftp remoto y copiar los archivos. La autenticación es opcional, los archivos se envían sin formato a través de la red.
Todo esto parece mucho trabajo, y de hecho lo es, porque no existe un solo protocolo estandarizado y ampliamente adoptado que se implementaría y configuraría de forma inmediata en la mayoría de los sistemas.