InvalidKeySpecException при выполнении ssh с sshj с использованием ppk - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь использовать ssh java-библиотеку sshj для экземпляра ec2 redhat с файлом ppk, получаю исключение InvalidKeySpecException.Где, как я могу успешно SSH к другим машинам с тем же PPK.Я полагаю, что мне не хватает какой-то конфигурации в экземпляре ec2, любая помощь будет оценена по достоинству.

Примечание: я могу сделать ssh с рассматриваемой машиной через шпаклевку.

ниже приведена трассировка стекая получаю в приложении:

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

1 Ответ

0 голосов
/ 18 января 2019

Файл ppk является файлом закрытого ключа Putty, который не совместим с форматами OpenSSH, которые поддерживаются SSHJ.Вы можете преобразовать ваш ppk файл для использования SSHJ, используя следующую команду: puttygen <keyfile>.ppk -O private-openssh -o <outfile>

...