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


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

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


362
2017-07-18 09:57


Источник


pbcopy > ~/.ssh/id_rsa.pub упс. - Nick T
@NickT - pbcopy - это команда MacOSX. Кроме того, это бесполезно, если вы перезагрузились, вышли из системы или скопировали что-нибудь еще в буфер обмена. - jsnfwlr


Ответы:


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


556
2017-07-18 10:12



вы сделали кусок пирога. благодаря - bragboy
Обратите внимание, что ваш файл закрытого ключа ~/.ssh/id_rsa должно быть ограничено вашим именем пользователя. использование $ sudo chmod 600 ~/.ssh/id_rsa и введите свои корневые учетные данные, чтобы ограничить его, затем вы можете вывести файл открытого ключа. В противном случае вы получите предупреждение о закрытом секретном ключе. - Mark Mikofski
@MarkMikofski Не нужно sudo, вы должны владеть закрытым ключом уже. В противном случае вы не сможете его прочитать в первую очередь. - Lekensteyn
@Lekensteyn спасибо, конечно, вы правы !. Также 400 рекомендуется, так как нет необходимости писать для ввода файла закрытого ключа. Исправленная команда должна быть $ chmod 400 ~/.ssh/id_rsa - Mark Mikofski
Комментарий закрытого ключа теряется. Видеть stackoverflow.com/questions/38290929/... - weberjn


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

(Отказ от ответственности)

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


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

  1. PuTTYgen
  2. WinSCP

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

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

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

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

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

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

    Если вы это сделаете не иметь закрытый ключ:

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

    Sample Key Generation pic

  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


12
2017-11-20 06:18



Если ваш домашний каталог застрахован, выполните следующие действия: askubuntu.com/questions/439184/... - devprashant
хотя ваш ответ действительно не имеет отношения к вопросу, я голосую за него из-за вашего энтузиазма. - Truong Nguyen