Ключ SSH, сгенерированный ssh-keygen, не распознается Paramiko: «недопустимый файл закрытого ключа RSA» - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть следующий код:

ssh_key = paramiko.RSAKey.from_private_key_file(key_filename)

ключ выглядит так:

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEAqdgmJ2AQlmvpCsDWjbpIvIrx4AwtKn2t10wmGZIN9pqcJgQpo3HD

и действителен:

 $ ssh-keygen -l -f <mykeyfile>
 $ 2048 SHA256:x8jlUAObU3q2KXRtuGpxwhnGvB/ZoeD2IUqSA1OkCmI thomas@Thomas-MBP-2017 (RSA)

но я получаюследующая ошибка:

не является допустимым файлом закрытого ключа RSA

Это на MacOS, Python 2.7, Paramiko 2.4.2

Что яделать неправильно?

1 Ответ

0 голосов
/ 09 апреля 2019

Для OpenSSH 7.8 вы должны обмануть его.Запустите ssh-keygen -p [-f file] -m pem, чтобы изменить парольную фразу, но повторно использовать старую.Используйте -P oldpw -N newpw, если вы хотите избежать запросов, как в сценарии, но будьте осторожны, чтобы сделать вашу парольную фразу видимой для других пользователей.В качестве побочного эффекта это переписывает ключевой файл (если не ed25519) в «старом» (OpenSSL-совместимом и, следовательно, парамико-совместимом) формате.(Если вы хотите сохранить файл в новом формате, скопируйте сначала.)

Для более старых версий OpenSSH просто выполните ssh-keygen -p [-f file] БЕЗ -o.

Также, если у вас есть (или вы получаете), утилита puttygen в пакете PuTTY от 0.69 и выше поддерживает этот формат.В версии Unix просто сделайте puttygen newfmtfile -O private-openssh -o oldfmtfile (опять же исключая ed25519).В версии AFAICT для Windows вы должны использовать графический интерфейс;загрузить новыйfmtfile и выполнить Преобразования / Экспорт OpenSSH ключ.

...