Bruce Lowe
Bruce Lowe

Reputation: 6213

SCP from a Java program with a Java Keystore

I need to SCP files (e.g. csv files) to another server in a java program. The RSA keys for SCP are stored in a java keystore.

I have not been able to find any code which allows one to do this.

Can anyone provide some sample code or ideas on how to do this?

(I have found some code that works with id_rsa String. But they are a different format. And trying to extract/convert to that format is proving difficult)

Upvotes: 1

Views: 1728

Answers (1)

pmichna
pmichna

Reputation: 4888

Here and here is some information about converting keys from java keystore to a .pem file. Then you can use the pem to SCP.

Try sshj library. Here is an example of SCP upload:

import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.xfer.FileSystemFile;

import java.io.File;
import java.io.IOException;

/** This example demonstrates uploading of a file over SCP to the SSH server. */
public class SCPUpload {

    public static void main(String[] args)
            throws IOException, ClassNotFoundException {
        SSHClient ssh = new SSHClient();
        ssh.loadKnownHosts();
        ssh.connect("localhost");
        try {
            ssh.authPublickey("/path/to/key.pem"));

            // Present here to demo algorithm renegotiation - could have just put this before connect()
            // Make sure JZlib is in classpath for this to work
            ssh.useCompression();

            final String src = System.getProperty("user.home") + File.separator + "test_file";
            ssh.newSCPFileTransfer().upload(new FileSystemFile(src), "/tmp/");
        } finally {
            ssh.disconnect();
        }
    }
}

Upvotes: 1

Related Questions