SCP with Java

SCP (Secure Copy) allows the files in the local file system or a remote file system to be copied to the local files system or a remote file system. This uses SSH for data transfer and provides the same authentication and same level of security as SSH.

Source: http://cdn.journaldev.com/wp-content/uploads/2011/02/jsch-example.jpg

Authentication

Authentication between two hosts can be done using the ‘private and public key pair’ or ‘username and password’. But user have to make sure that the public key of local machine should be saved in authorized_keys of the remote machine.

Test SCP

Note: The remote host can be the same local host. No need to have a remote machine.

How SCP with Java?

JSch library which is a pure Java implementation of SSH2. JSch allows user to connect to an sshd server and use port forwarding, X11 forwarding, file transfer, etc., and user can integrate its functionality into user’s own Java programs. JSch is licensed under BSD style license.

Design and Implementation

Initially user have to identify the remote hosts that user are going to copy the files from and copy the files to. It can be a host name or an IP. Then user has to create a com.jcraft.jsch.Session using createSession(…) method and parsing the required set of parameters, in order to work with SCP.

In this example the private key is provided for the authentication. So that the public key of local machine is saved in authorized_keys of the remote machine.

This is how the user can SCP files from remote host to local host. User has to provide the session he has created using createSession(…) method.

This is how the user can SCP files from local host to remote host. User has to provide the session he has created using createSession(…) method.

GitHub Repository: https://github.com/ldclakmal/SCPTransport

References:

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.