首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ppk对sshj执行ssh时的InvalidKeySpecException

使用ppk对sshj执行ssh时的InvalidKeySpecException
EN

Stack Overflow用户
提问于 2018-12-13 10:53:15
回答 2查看 277关注 0票数 0

我试图使用sshj库对带有ppk文件的ec2 redhat实例进行ssh,我正在获取InvalidKeySpecException。因为我能够成功地用相同的ppk对其他机器进行ssh。我想我在ec2实例中缺少了一些配置,任何帮助都将不胜感激。

注:我可以通过腻子对有关机器进行ssh操作。

下面是我在应用程序中获得的堆栈跟踪:

代码语言:javascript
复制
net.schmizz.sshj.transport.TransportException: java.security.spec.InvalidKeySpecException: key spec not recognised
        at net.schmizz.sshj.transport.TransportException$1.chain(TransportException.java:33)
        at net.schmizz.sshj.transport.TransportException$1.chain(TransportException.java:27)
        at net.schmizz.concurrent.Promise.deliverError(Promise.java:95)
        at net.schmizz.concurrent.Event.deliverError(Event.java:74)
        at net.schmizz.concurrent.ErrorDeliveryUtil.alertEvents(ErrorDeliveryUtil.java:34)
        at net.schmizz.sshj.transport.KeyExchanger.notifyError(KeyExchanger.java:386)
        at net.schmizz.sshj.transport.TransportImpl.die(TransportImpl.java:600)
        at net.schmizz.sshj.transport.Reader.run(Reader.java:67)
Caused by: net.schmizz.sshj.common.SSHException: java.security.spec.InvalidKeySpecException: key spec not recognised
        at net.schmizz.sshj.common.SSHException$1.chain(SSHException.java:36)
        at net.schmizz.sshj.common.SSHException$1.chain(SSHException.java:29)
        at net.schmizz.sshj.transport.TransportImpl.die(TransportImpl.java:595)
        ... 1 common frames omitted
Caused by: net.schmizz.sshj.common.SSHRuntimeException: java.security.spec.InvalidKeySpecException: key spec not recognised
        at net.schmizz.sshj.common.Buffer.readPublicKey(Buffer.java:466)
        at net.schmizz.sshj.transport.kex.AbstractDHG.next(AbstractDHG.java:66)
        at net.schmizz.sshj.transport.KeyExchanger.handle(KeyExchanger.java:358)
        at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:503)
        at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:102)
        at net.schmizz.sshj.transport.Decoder.received(Decoder.java:170)
        at net.schmizz.sshj.transport.Reader.run(Reader.java:59)
Caused by: java.security.GeneralSecurityException: java.security.spec.InvalidKeySpecException: key spec not recognised
        at net.schmizz.sshj.common.ECDSAVariationsAdapter.readPubKeyFromBuffer(ECDSAVariationsAdapter.java:92)
        at net.schmizz.sshj.common.KeyType$3.readPubKeyFromBuffer(KeyType.java:113)
        at net.schmizz.sshj.common.Buffer.readPublicKey(Buffer.java:464)
        ... 6 common frames omitted
Caused by: java.security.spec.InvalidKeySpecException: key spec not recognised
        at org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic(Unknown Source)
        at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.engineGeneratePublic(Unknown Source)
        at java.security.KeyFactory.generatePublic(KeyFactory.java:334)
        at net.schmizz.sshj.common.ECDSAVariationsAdapter.readPubKeyFromBuffer(ECDSAVariationsAdapter.java:90)
    ... 8 common frames omitted
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-31 07:10:49

这个非常棘手,sshj库使用ssh-rsa算法。因此,我们需要在ec2实例中添加ssh-rsa算法。步骤:

  1. 编辑文件/etc/ssh/sshd_config。
  2. 添加条目HostKeyAlgorithms ssh-rsa

从那以后开始起作用了。

票数 0
EN

Stack Overflow用户

发布于 2019-01-18 08:48:34

ppk文件是一个Putty私钥文件,它与SSHJ支持的OpenSSH格式不兼容。您可以使用以下命令将您的ppk文件转换为SSHJ使用:puttygen <keyfile>.ppk -O private-openssh -o <outfile>

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

https://stackoverflow.com/questions/53760217

复制
相关文章

相似问题

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