Создать открытый ключ 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 и вставьте данные ключа в файл авторизованных ключей (используя блокнот), если вы хотите их использовать.

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

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

devprashant
источник
Дополнительное чтение: askubuntu.com/questions/53553/…
devprashant
Puttygen также может «импортировать» закрытые ключи формата OpenSSH (на самом деле OpenSSL-унаследованное) и SSHCOM. И хотя он был создан в Windows, он также был портирован на Unix, и версия Unix puttygenявляется программой командной строки (не GUI); см., например, linux.die.net/man/1/puttygen
dave_thompson_085