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

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

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

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

То вариант -y выводит открытый ключ:

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

В качестве дополнительного примечания комментарий к открытому ключу теряется. У меня был сайт, который требовал комментария (панель запуска?), Поэтому вам нужно отредактировать ~/.ssh/id_rsa.pub и добавьте комментарий к первой строке с пробелом между комментарием и ключевыми данными. Пример открытого ключа показан ниже в усеченном виде.

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

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

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

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

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


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

  1. шпатлевка
  2. WinSCP

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

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

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

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

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

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

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

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

    Sample Key Generation pic

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

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

pbcopy > ~/.ssh/id_rsa.pub упс.

@NickT - pbcopy - это команда MacOSX. Кроме того, это бесполезно, если вы перезагрузились, вышли из системы или скопировали что-либо еще в буфер обмена.