来自具有Java密钥库的Java程序的SCP

来自具有Java密钥库的Java程序的SCP,java,ssh,keystore,scp,Java,Ssh,Keystore,Scp,我需要将文件(例如csv文件)SCP到java程序中的另一台服务器。SCP的RSA密钥存储在java密钥库中 我还没有找到任何代码,允许一个这样做 有人能提供一些示例代码或关于如何做到这一点的想法吗 (我发现了一些使用id_rsa字符串的代码。但它们是不同的格式。尝试提取/转换为该格式很困难)以及一些有关将密钥从java密钥库转换为.pem文件的信息。然后您可以使用pem到SCP 试试图书馆。以下是SCP上载的示例: import net.schmizz.sshj.SSHClient; impo

我需要将文件(例如csv文件)SCP到java程序中的另一台服务器。SCP的RSA密钥存储在java密钥库中

我还没有找到任何代码,允许一个这样做

有人能提供一些示例代码或关于如何做到这一点的想法吗

(我发现了一些使用id_rsa字符串的代码。但它们是不同的格式。尝试提取/转换为该格式很困难)

以及一些有关将密钥从java密钥库转换为.pem文件的信息。然后您可以使用pem到SCP

试试图书馆。以下是SCP上载的示例:

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();
        }
    }
}

谢谢-我知道如何出口质子交换膜并使其工作。如果不做那一步,我似乎无法让它工作。也就是说,直接从密钥库。我们的开发人员似乎希望将所有密钥保存在密钥库中,以便于维护/安全。但是,我看到您提供的API有一个loadKeys(KeyPair kp)。我相信我可以通过编程从密钥库中提取密钥对。我将根据您的答案看看我能做些什么。此示例因net.schmizz.sshj.xfer.scp.SCPException而失败