Як я можу отримати відкритий ключ із приватного ключа SSH?

369

Приватний ключ SSH, який генерується ssh-keygen містить частину відкритого ключа. Як отримати цей відкритий ключ із приватного ключа? Я загубив свій відкритий ключ, і потрібно додати вміст цього відкритого ключа до файлу authorized_keys і не бажаю створити нову пару ключів.

Альтернативно виразите форму: як створити файл id_rsa.pub з файлу id_rsa ?

    
задане Lekensteyn 18.07.2011 в 11:57
джерело

2 відповіді

571

Я знайшов відповідь на серверні помилки: Створіть загальнодоступний SSH-ключ із приватного ключа?

Параметр -y виводить відкритий ключ:

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

Як прикметник, коментар публічного ключа буде втрачено. У мене був сайт, який потребував коментаря (Launchpad?), Тому вам потрібно змінити ~/.ssh/id_rsa.pub і додати коментар до першого рядка з пробілом між коментарем та ключовими даними. Приклад відкритого ключа показаний укороченою нижче.

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

Для ключів, які були додані до агента SSH (програма, яка працює у фоновому режимі та уникає необхідності знову вводити парольну фразу ключових файлів знову і знову), ви можете використовувати команду ssh-add -L для переліку загальних ключів для ключів, які були додані до агента (через ssh-add -l ). Це корисно, коли ключ SSH зберігається на смарт-картці (і доступ до файлу приватного ключа неможливий).

    
відповідь дана Lekensteyn 18.07.2011 в 12:12
джерело
12

Це рішення спеціально для користувачів, що використовують Windows для SSH, на своїх віддалених комп'ютерах, включаючи зображення хмар на Amazon AWS і GCE.

(Відмова від відповідальності)

Нещодавно я використовував це рішення для віддаленого входу в нові розгорнуті VM-зображення на GCE.

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

  1. puttygen
  2. WinSCP

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

  1. Створіть пару публічних / приватних ключів, використовуючи паттиген.
  2. Завантажте відкритий ключ на свій сервер у хмарі або в віддалене місце.

Опис (як це зробити):

  1. Генеруйте ключ / пар або використовуйте наявну приватну клавішу:

    Якщо у вас є особистий ключ:

    Відкрийте штамп, натисніть кнопку завантаження та виберіть свій приватний ключ (* .pem).

    Якщо ви не маєте приватний ключ:

    • Відкрити паттиген,
    • Виберіть потрібний тип ключа SSH2 DSA (ви можете використовувати RSA або DSA) у розділі Parameters ... і важливо залишити поле парольної фразу пустим,
    • Натисніть генерувати та дотримуйтесь інструкцій, щоб створити пару ключів (публічну / приватну).

  2. Створіть новий файл "authorized_keys" (з Блокнотом):

    Скопіюйте дані свого відкритого ключа у розділі "Публічний ключ для вставлення в файл OpenSSH authorized_keys" у генераторі PuTTY Key і вставте дані ключа у файл "authorized_keys".

    Переконайтеся, що в цьому файлі є лише одна рядок тексту.

  3. Завантажте ключ до сервера Linux:

    • Відкрийте WinSCP,
    • Виберіть протокол файлу SFTP і увійдіть у свій обліковий запис SSH.
    • Після успіху ви бачите структуру домашнього каталогу на віддаленій машині.

    Завантажте файл authorized_keys у домашній каталог на віддаленій машині.

  4. Встановити правильні дозволи:

    Зробіть каталог .ssh (якщо його не існує)

    Скопіюйте файл authorized_keys до каталогу .ssh (це замінить будь-який існуючий файл authorized_keys ; візьміть до уваги це).

    Якщо файл існує, просто додайте вміст цього файлу в існуючий файл.

    Виконайте команди для встановлення дозволів:

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

Тепер ви зможете запустити ssh на віддаленій машині без вводу облікових даних кожного разу

Додаткові відомості:

  1. Створення та завантаження ключів SSH під Windows

  2. Автентифікація без пароля з використанням OpenSSH Ключ, сертифікати .pem і .pub

відповідь дана devprashant 20.11.2015 в 07:18
джерело

Ознайомтеся з іншими питаннями з міткою