首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSCH -私钥无效

JSCH -私钥无效
EN

Stack Overflow用户
提问于 2013-03-11 14:00:15
回答 5查看 50K关注 0票数 17

我正在使用netbeans 7.2运行JDK 1.7和Windows 7,我已经使用putty-keygen生成了SSH私钥和公钥对(SSH2-2048位)。我没有私钥的密码。我现在正在尝试使用SFTP连接到其中一台主机。但是,当我传递私钥(ppk)来设置身份时,代码返回无效私钥错误。我在WinSCP中使用相同的私钥连接到相同的主机&它工作得很好。请帮助我解决这个错误。下面是我的代码:

代码语言:javascript
复制
JSch jsch = new JSch();

Session session = null;

try {

    jsch.addIdentity("D:\\TEMP\\key.ppk");

    session = jsch.getSession("tiabscp", "ssiw.support.qvalent.com", 22);
    session.setConfig("StrictHostKeyChecking", "no");
    //session.setPassword("");
    session.connect();
    Channel channel = session.openChannel("sftp");
    System.out.println("Getting connected");
    channel.connect();
    System.out.println("connected successfully");
    ChannelSftp sftpChannel = (ChannelSftp) channel;
    sftpChannel.get("remotefile.txt", "localfile.txt");
    sftpChannel.exit();
    session.disconnect();
}catch (JSchException e) {

    e.printStackTrace();

}catch (SftpException e) {

    e.printStackTrace();
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-11 14:33:39

我猜您的密钥不是OpenSSH密钥文件格式。JSch要求私钥采用OpenSSH格式。

您可以按照here中描述的步骤,使用PuTTYgen转换您的私钥,使其与OpenSSH一起工作

按Load并选择使用密码创建的私钥以加载密钥。

  • 从Conversion菜单中选择 OpenSSH Key
  1. 保存私钥。
票数 34
EN

Stack Overflow用户

发布于 2014-03-04 23:00:12

也许对你来说不是一个解决方案,但我在搜索我的问题时发现了这个问题。

当JSCH期望私钥文件时,我意外地给出了公钥文件的路径。

票数 5
EN

Stack Overflow用户

发布于 2014-01-29 20:00:06

您可以使用PEMWriter将私钥转换为JSch可以接受的PEM格式

下面的示例转换从Java KeyStore (JKS)返回的键。

代码语言:javascript
复制
Key privateKey = KeyStore.getKey(privateKeyAlias, keyStorePassword);//get key from JKS
StringWriter stringWriter = new StringWriter();
PEMWriter pemWriter = new PEMWriter(stringWriter);
pemWriter.writeObject(privateKey);
pemWriter.close();

byte[] privateKeyPEM = stringWriter.toString().getBytes();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15332120

复制
相关文章

相似问题

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