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

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

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

359 голосов | спросил Lekensteyn 18 J000000Monday11 2011, 13:57:57

2 ответа


556

Я нашел ответ на 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 J000000Monday11 2011, 14:12:20
12

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

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

(Отказ)

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


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

  1. puttygen
  2. winscp

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

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

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

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

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

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

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

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

      Пример создания кода пика

  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. https: //opengear .zendesk.com /записи /23216142-Генерирующие-и-Выгрузка-SSH-ключи-под-Windows

  2. http: //www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt

ответил devprashant 20 52015vEurope/Moscow11bEurope/MoscowFri, 20 Nov 2015 09:18:17 +0300 2015, 09:18:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132