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

326

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

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

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

2 ответа

492

Я нашел ответ на Serverfault: Создать открытый 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 в 12:12
источник
9

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

(Если это работает для вас, upvote очень ценится. Спасибо за ваше терпение.)

(Отказ)

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

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

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

    Скопируйте данные открытого ключа из «Открытого ключа для вставки в файл 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. Ссылка

  2. Ссылка

ответ дан devprashant 20.11.2015 в 07:18
источник

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