首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSch addIdentity -如何传递私钥和公钥字符串与文件路径

JSch addIdentity -如何传递私钥和公钥字符串与文件路径
EN

Stack Overflow用户
提问于 2020-12-08 15:13:58
回答 1查看 1.3K关注 0票数 3

这方面有很多示例,但没有一个示例显示如何在转换为.ppk并与JSch.addIdentity(String,byte[],byte[],byte[])方法一起使用的字符串形式中使用JSch.addIdentity(String,byte[],byte[],byte[])公共/私有文件组件。有人能看看下面的方法,让我知道我哪里出错了吗?它不喜欢将字符串转换为byte[]。由于安全原因,字符串并不完整,但我认为您将理解我正在尝试用它完成的任务。不幸的是,由于不能直接使用.ppk文件,所以我无法使用字符串。

代码语言:javascript
运行
复制
public void InitChannelSftp() throws JSchException {
    JSch ssh = new JSch();
    session_ = ssh.getSession(userName_, host_, port_);
    session_.setConfig("StrictHostKeyChecking", "no");
    
    String passPhrase= "trustNoOne";

    String privateKey= "-----BEGIN RSA PRIVATE KEY-----\n" +
            "hvbytegNktMU05bc3QlCrSs+YHkMAvZRkzcjaXDdcKDfSZyDqcFHfkup1N6CMDg4\n" +
            "yZh0ou+7G8jDQtn29YoAO0tpEW4EGQiI6918iMk22012ytcsCnM80/hj1JbVa4St\n" +
            "1StZKJtBYSu1bRZCpFPygditUGc9pZhDWfgDxLTzQdDMcmdvMb9AgpNKZAz8n0OR\n" +
            "2tuGPAogbt8e48ad9H7IYuikhIqQU42DkrAqRPJDUZqP3gGdzwstuDPl1dwrRaCs\n" +
            "vTynsEMDCjVjNyxRK9sbBO/BwFTaFRM2oN4BvCbfbQKyhRrXZ1gjNMv1P5GxchKj\n"+
            "-----END RSA PRIVATE KEY-----\n";

    String publicKey= "-----BEGIN SH2 PUBLIC KEY-----\n" +
            "AAAAB3NzaC1yc2EAAAABJQAAAQEA6wXxLoqF70gkd2hURVlmq+iPCBPmkZ6IwCST\n" +
            "nlxHY/Jc0izbn+6hyFUZmS53LN9CJyjjVvU+UAWapU2tTJKwO6aI8xcKmtBjdDeS\n" +
            "GJgh6C+srGFlbNTXzV8sMmGEQirLyTOMwGviRFOhKn5/bUbqpw==\n" +
            "-----BEGIN SH2 PUBLIC KEY-----\n"


    ssh.addIdentity(
        "Test Conn", privateKey.getBytes(StandardCharsets.US_ASCII),
        publicKey.getBytes(StandardCharsets.US_ASCII), passPhrase.getBytes());

    session_.connect();
    channel_ = session_.openChannel("sftp");
    channel_.connect();
    ChannelSftp sftp_ = (ChannelSftp) channel_;
}

错误:

com.jcraft.jsch.JSchException:无效私钥:[B@25be7b63

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-08 15:33:21

代码语言:javascript
运行
复制
Charset charset = StandardCharsets.UTF_8;
ssh.addIdentity(
    UUID.randomUUID().toString(), privateKey.getBytes(charset),
    publicKey.getBytes(charset), passPhrase.getBytes(charset));

以下私钥格式起作用:

代码语言:javascript
运行
复制
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,322A25B18A52EDD1

Pwb2h8N...x8ijUQ==
-----END RSA PRIVATE KEY-----

在结尾处不需要空行。

在PuTTY中,这是通过Conversions > Export OpenSSH key实现的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65201558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档