Я пытаюсь подключиться к SSH к EC2, используя библиотеку JSch из кода Java. Я сослался на эту ссылку в SO Как я могу использовать содержимое файлов .pem в виде строки в соединении ec2, используя библиотеку JSch , и попробовал пару вещей, как указано ниже, но тщетно. Может кто-нибудь подсказать мне, как достичь моей цели?
Цель
У меня есть такой файл PEM. Я не хочу хранить свой файл PEM где-либо в AWS, поэтому мой подход заключается в извлечении эквивалентной строки, которую я могу кодировать и сохранять в базе данных, и декодировать ее из Java для передачи параметра в метод addIdentity
, который принимает эти параметры:
addIdentity(String name, byte[] prvkey, byte[] pubkey, byte[] passphrase)
throws JSchException
-----BEGIN RSA PRIVATE KEY-----
MIIepsdfAIBAAKCAQEAtBk068z
...
xVNdhlDy6asdk9wsdQ==
-----END RSA PRIVATE KEY-----
Для моей цели мой addIdentity
метод был бы таким, как я полагаю:
addIdentity ("username","{privatekey string converted to byte array}",null, null)
Я пытаюсь понять, как эта строка может быть сформирована? Я очень плохо знаком с криптографией, но в ходе этого процесса я узнал, что, поскольку мой PEM имеет BEGIN RSA PRIVATE KEY
, это формат PKCS1. Поддерживает ли JSch формат PKCS1 или его необходимо преобразовать в PKSC8?
Во-вторых, я узнал, что тело кодируется с помощью Base64, поэтому я даже попытался расшифровать строку с помощью Base64 после удаления всех возвратов каретки, верхнего и нижнего колонтитула, что привело к ошибке, подобной этой
Исключение в потоке "main" java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: ошибка синтаксического анализа, не последовательность
Ниже приведены некоторые дополнительные ссылки, по которым я пытался перейти, но не смог их разрешить.
Надеюсь, кто-то может направить меня в правильном направлении.
Спасибо!