Создать открытый ключ SSH из закрытого ключа?


215

Предположим, у меня есть ключ SSH, но я удалил часть открытого ключа. У меня есть часть закрытого ключа. Есть ли способ, которым я могу восстановить часть открытого ключа?

Ответы:


253

Используйте опцию -y для ssh-keygen:

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

От 'man ssh-keygen'

 -y      This option will read a private OpenSSH format file and print an
         OpenSSH public key to stdout.

Укажите закрытый ключ с параметром -f, ваш может быть dsa вместо rsa. Возможно, имя вашего личного ключа содержит то, что вы использовали. Вновь созданный открытый ключ должен быть таким же, как тот, который вы создали ранее.


7
Почему "-t dsa"? Может, ключ ОП - это РСА? Я бы избавился от -t и вместо этого использовал бы -f.
InnaM

1
Хороший вопрос, обновлено соответственно
Кайл Брандт

да мой изначально был RSA.
Рори

1
В Mac OSX 10.9.3 Mavericks я получаю «загрузка не удалась» после выполнения команды. Как мне это решить?
Hyperfocus

Я думаю, вы могли бы сделать еще один шаг с параметром -N, если закрытый ключ защищен паролем:ssh-keygen -f ~/.ssh/id_rsa -y -N "$PASSWORD" > ~/.ssh/id_rsa.pub
ken

6

Решение специально для пользователей, использующих Windows

Используемый инструмент:

  • Puttygen (Генератор ключей PuTTY)
  • WinSCP

Шаги для выполнения:

  1. Откройте PuTTY Key Generator.
  2. Загрузите свой закрытый ключ ( *.ppkфайл).
  3. Скопируйте данные вашего открытого ключа из раздела «Открытый ключ для вставки в OpenSSH файл авторизованных ключей» в генераторе ключей PuTTY и вставьте данные ключа в файл авторизованных ключей (используя блокнот), если вы хотите их использовать.

Снимок, показывающий части Путтигена для фокусировки:

Снимок, показывающий части Путтигена, чтобы сфокусироваться


Дополнительное чтение: askubuntu.com/questions/53553/…
devprashant

Puttygen также может «импортировать» закрытые ключи формата OpenSSH (на самом деле OpenSSL-унаследованное) и SSHCOM. И хотя он был создан в Windows, он также был портирован на Unix, и версия Unix puttygenявляется программой командной строки (не GUI); см., например, linux.die.net/man/1/puttygen
dave_thompson_085
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.