Как получить открытый ключ из частного ключа SSH?

374

Закрытый ключ SSH, сгенерированный ssh-keygen , содержит часть открытого ключа. Как получить этот открытый ключ из закрытого ключа? Я потерял свой открытый ключ и вам нужно поместить содержимое этого открытого ключа в серверauthorized_keys file и не хочу создавать новую пару ключей.

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

    
задан Lekensteyn 18.07.2011 в 09:57
источник

2 ответа

581

Я нашел ответ на Ошибка сервера: Создать открытый 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 Agent (программа, которая работает в фоновом режиме и избегает необходимости повторного ввода ключевой фразы keyfile снова и снова), вы можете использовать команду ssh-add -L для отображения открытых ключей для ключей, которые были добавлены к агенту (через ssh-add -l ). Это полезно, когда ключ SSH хранится на смарт-карте (и доступ к файлу закрытого ключа невозможен).

    
ответ дан Lekensteyn 18.07.2011 в 10:12
источник
12

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

(Отказ)

Недавно я использовал это решение для удаленного входа в систему для новых развернутых изображений VM на GCE.

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

  1. puttygen
  2. WinSCP

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

  1. Создание пары открытого / закрытого ключей с помощью puttygen.
  2. Загрузите открытый ключ на свой сервер в облаке или удаленном месте.

Описание (как это сделать):

  1. Создайте ключ / пару или используйте существующий закрытый ключ:

    Если у вас есть закрытый ключ:

    Откройте puttygen, нажмите кнопку загрузки и выберите файл приватного ключа (* .pem).

    Если у вас not есть закрытый ключ:

    • Откройте puttygen,
    • Выберите нужный тип ключа SSH2 DSA (вы можете использовать RSA или DSA) в разделе «Параметры» ... и важно оставить поле кодовой фразы пустым,
    • Нажмите кнопку генерации и следуйте инструкциям для создания пары ключей (public / private).

  2. Создайте новый файл authorized_keys (с помощью Notepad):

    Скопируйте данные открытого ключа из «Открытого ключа для вставки в файл OpenSSH authorized_keys» в Generator Generator PuTTY и вставьте данные ключа в файл «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 в 06:18
источник

Ознакомьтесь с другими вопросами по меткам