Как преобразовать закрытый ключ ed25519 в putty ppk?
Я хочу преобразовать закрытый ключ ed25519 (который генерируется командой ssh-keygen
) в файл ppk. Но я получил ошибку.
Не удалось загрузить закрытый ключ (непризнанное имя шифра)
Кто-нибудь может мне помочь?
-
проверенная версия openssh: OpenSSH_7.6p1, OpenSSL 1.1.0g 2 Nov 2017
и OpenSSH_7.6p1, OpenSSL 1.0.2n 7 Dec 2017
(на контейнере OpenSSH_7.6p1, OpenSSL 1.0.2n 7 Dec 2017
CoreOS и ArchLinux)
-
проверенная версия шпатлевки: 0.70 64bit
, 0.70 32bit
и snapshot
(на окнах 10)
Моя процедура такова.
1. Создайте закрытый ключ ed25519
# ssh-keygen -t ed25519 -a 100
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_ed25519.
Your public key has been saved in /root/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:2HfORujStwmC9c91rmDxMbaV9kVMT70gWxnRXAvNrNU [email protected]
The key randomart image is:
+--[ED25519 256]--+
| +X B|
| . [email protected]|
| + +.=|
| o o . o.|
| . S o + +oo|
| o = = +.=o|
| . o = B + o|
| o B = o |
| = ...|
+----[SHA256]-----+
# cat .ssh/id_ed25519
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABClhk1367
G8CQYpo/0c7UShAAAAZAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIIJiwIymcly4s66p
za/IL3ZNyT5CiMPj0R+/LnMDmABUAAAAoMJIakdbIL7TOAmX8n4xGSrtp8mc/Mr6qimZAZ
zGB7iRhNUXT+isPdf0YuC9mh5NbX43ZYFl+/sWdi2hVmJxbGTwrjaSdNzF3ZnSpi/aVlzF
t3bUCtdwhHLaLqy9unw0zPHlfcQsB700GS/bf4VKRmm1+imj3cAldUm2RF3VdI0U9/04yX
Mj+VBOmevM0i7R/0d6xUFTH3zj99xxeLI2J6A=
-----END OPENSSH PRIVATE KEY-----
# cat .ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIJiwIymcly4s66pza/IL3ZNyT5CiMPj0R+/LnMDmABU [email protected]
2. Запустите puttygen.exe
в Windows и попробуйте импортировать закрытый ключ ed25519 (.ssh/id_ed25519
)
Не удалось загрузить закрытый ключ (непризнанное имя шифра)
Ответы
Ответ 1
Обновление 2019-03-20:
https://www.chiark.greenend.org.uk/~sgtatham/putty/releases/0.71.html поддерживает эти ключи
На момент написания этой статьи снимок puttygen из https://www.chiark.greenend.org.uk/~sgtatham/putty/snapshot.html, кажется, поддерживает эти ключи, а 0.70 - нет. Это явно не упоминается в журнале изменений.
Я тестировал Development snapshot 2019-01-17.53747ad
Ответ 2
Команда в приведенном выше ответе - это просто печать части открытого ключа в формате RFC4716.
В какой-то момент ssh-keygen генерирует закрытый ключ openssh, который не использует шифр, поддерживаемый puttygen.
ssh-keygen не предоставляет возможность указывать имя шифра для шифрования полученного закрытого ключа openssh.
Существует обходное решение: удалите ключевую фразу из ключа перед импортом в puttygen.
$ cp ~/.ssh/id_ed25519 ~/.ssh/id_ed25519-for-putty
$ ssh-keygen -p -f ~/.ssh/id_ed25519-for-putty
Enter old passphrase: <your passphrase>
Enter new passphrase (empty for no passphrase): <press Enter>
Enter same passphrase again: <press Enter>
Затем используйте puttygen для преобразования ~/.ssh/id_ed25519-for-putty в.ppk и установите кодовую фразу из puttygen.
Не забывайте об измельчении и удалять ~/.ssh_id_ed25519-for-putty после этого по очевидной причине.
Ответ 3
Вам необходимо экспортировать ключ в формат RFC4716, прежде чем импортировать ключ в puttygen
$ ssh-keygen -e -m RFC4716 -f ~/.ssh/id_ed25519 > ~/.ssh/exported_id_ed25519
Затем импортируйте полученный exported_id_ed25519 в puttygen и преобразуйте ключ в.ppk
Ответ 4
На самом деле эта проблема не касается самого Ed25519. Это происходит из-за нового формата openssh. Следующим является то, что man ssh-keygen
показывает о опции -o.
-o Заставляет ssh-keygen сохранять личные ключи с использованием нового формата OpenSSH, а не более совместимого формата PEM. Новый формат повышает устойчивость к взлому паролей, но не поддерживается версиями OpenSSH до 6.5. Клавиши Ed25519 всегда используют новый формат закрытого ключа.
Новый формат шифрует файл секретного ключа несколько раз (обычно около 100 раз) с функцией деривации ключа (KDF) для медленного дешифрования. Поиск дополнительной информации о новом формате с использованием bcrypt KDF можно запустить по этой ссылке: https://pthree.org/2014/12/08/super-size-the-strength-of-your-openssh-private- ключи /
вы можете попробовать ssh-keygen с опцией -o в закрытый ключ rsa или dsa type и посмотреть, что puttygen также не может их разобрать. И, как вы можете видеть на странице руководства, у вас нет выбора для puttygen в Ed25519.
После некоторых боев, теперь я просто использую ключ, сделанный с puttygen, но я боюсь, что не могу получить пользу от KDF.
Ответ 5
У меня была такая же проблема, когда недавно при развертывании системы Debian и обновлении моих приложений-замазок с 0,70 до 0,72 эта проблема была исправлена.
Закрытый ключ был сгенерирован с помощью приведенной ниже команды в моей системе Debian, а затем передан на мой компьютер с Windows.
ssh-keygen -b 4096