Reputation: 6213
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
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