Створити відкритий ключ 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"? Ключ Мейдж ОП - rsa? Я б позбувся від -t і замість цього використав -f.
innaM

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

так, мій спочатку був RSA.
Рорі

1
На Mac OSX 10.9.3 Mavericks Після завантаження команди я отримую "помилку завантаження". Як я це вирішую?
Гіперфокус

Я думаю, ви можете зробити цей крок далі з параметром -N у випадку, якщо приватний ключ захищений паролем:ssh-keygen -f ~/.ssh/id_rsa -y -N "$PASSWORD" > ~/.ssh/id_rsa.pub
ken

6

Рішення спеціально для користувачів, які використовують Windows

Використовуваний інструмент:

  • Puttygen (генератор ключів PuTTY)
  • WinSCP

Кроки до виконання:

  1. Відкрийте генератор ключів PuTTY.
  2. Завантажте свій приватний ключ ( *.ppkфайл).
  3. Скопіюйте дані свого відкритого ключа із розділу "Публічний ключ для вставки у файл OpenSSH-дозволених файлів" у генераторі ключів PuTTY та вставте ключові дані у файл "дозволені_кільки" (за допомогою блокнота), якщо ви хочете їх використовувати.

Знімок, який показує ділянки Puttygen для фокусування:

Знімок, який показує порції Puttygen для фокусування


Подальше читання: 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.