我有私钥的内容我想使用 SSH 身份验证 SFTP 文件

问题描述

我有 SFTP 密钥对文件内容作为字符串。我需要使用 JSch 添加内容,但 addIdentity 只接受文件路径。无论如何我可以做到这一点吗?公钥已经上传到主机。我使用私钥通过 WinSCP 测试了连接,并且成功了。当我尝试从 Java 进程连接时,我得到了

[2021-01-12 11:00:41,518] [ERROR] [jobLauncherTaskExecutor-1] [c.j.p.d.u.FileUtil] [] : Exception : 
com.jcraft.jsch.JSchException: USERAUTH fail
    at com.jcraft.jsch.UserAuthPublicKey.start(UserAuthPublicKey.java:119)

以下是代码片段:

Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
String privateKeyPath = "-----BEGIN RSA PRIVATE KEY-----\n" +
        "Proc-Type: 4,ENCRYPTED\n" +
        "hkjhbkkhbkbkhbkjhbkjbkjhbkjb\n" +
        "-----END RSA PRIVATE KEY-----\n";
String passphrase = "passphrase";
JSch jsch = new JSch();
try (FileInputStream fileInputStream = new FileInputStream(new File(fileName));){
    jsch.addIdentity(sftpHost,privateKeyPath.getBytes(),null,passphrase.getBytes());
    session = jsch.getSession(sftpUser,sftpHost,sftpPort);
    java.util.Properties config = new java.util.Properties();
    config.put("StrictHostKeyChecking","no");
    session.setConfig(config);
    session.connect();
    log.info("Host connected.");
    channel = session.openChannel("sftp");
    channel.connect();
    log.info("sftp channel opened and connected.");
    channelSftp = (ChannelSftp) channel;
    channelSftp.cd(sftpWorkingFolder);
    channelSftp.put(fileInputStream,new File(fileName).getName());
} catch (JSchException | SftpException | IOException e) {
    log.error("Exception : ",e);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)