Ответ 1
Как отметил Роланд в своем ответе, это предупреждение о том, что ssh-agent
не понимает формат открытого ключа, и даже тогда открытый ключ не будет использоваться локально.
Однако я также могу уточнить и ответить, почему предупреждение существует. Это просто сводится к тому, что генератор ключей PuTTY генерирует два разных формата открытого ключа в зависимости от того, что вы делаете в программе.
Примечание. Во всех моих объяснениях ключевые файлы, которые я буду использовать/генерировать, будут называться id_rsa
с их соответствующими расширениями. Кроме того, для удобства копирования-пасты родительская папка ключей будет считаться ~/.ssh/
. Отрегулируйте эти данные в соответствии с вашими потребностями.
Форматы
Ссылка на соответствующую документацию PuTTY
SSH-2
Когда вы сохраняете ключ с помощью генератора ключей PuTTY с помощью кнопки "Сохранить открытый ключ", он будет сохранен в формате, определенном RFC 4716.
Пример:
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "github-example-key"
AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYF
i2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcp
pY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3
oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEA
ip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9
tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw==
---- END SSH2 PUBLIC KEY ----
OpenSSH
Вопреки распространенному мнению, этот формат не сохраняется генератором. Однако он сгенерирован и показан в текстовом поле "Открытый ключ для вставки в файл OpenSSH authorized_keys". Чтобы сохранить его как файл, вы должны вручную скопировать его из текстового поля и вставить его в новый текстовый файл.
Для ключа, показанного выше, это будет:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw== github-example-key
Формат ключа - это просто ssh-rsa <signature> <comment>
и может быть создан путем изменения форматированного файла SSH-2.
Регенерация открытых ключей
Если вы используете ssh-agent
, у вас, скорее всего, также будет доступ к ssh-keygen
.
Если у вас есть id_rsa
ключ OpenSSH (файл id_rsa
), вы можете сгенерировать id_rsa
файл id_rsa
ключа OpenSSH, используя:
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub
Если у вас есть только id_rsa.ppk
ключ id_rsa.ppk
(файл id_rsa.ppk
), вам необходимо его сначала преобразовать.
- Откройте генератор ключей PuTTY
- В строке меню нажмите "Файл"> "Загрузить закрытый ключ",
- Выберите файл
id_rsa.ppk
- В строке меню нажмите "Конверсии"> "Экспорт ключа OpenSSH",
- Сохраните файл как
id_rsa
(без расширения)
Теперь, когда у вас есть закрытый ключ OpenSSH, вы можете использовать инструмент ssh-keygen
, как указано выше, для выполнения манипуляций с ключом.
Бонус: PKCS # 1 PEM-кодированный формат открытого ключа
Честно говоря, я не знаю, для чего этот ключ используется, поскольку он мне не нужен. Но у меня есть это в моих заметках, которые я собирал за эти годы, и я включу его здесь для полноценной доброты. Файл будет выглядеть так:
-----BEGIN RSA PUBLIC KEY-----
MIIBCAKCAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5Ew
gnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8D
Gm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48
ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8
hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D
6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElwIBJQ==
-----END RSA PUBLIC KEY-----
Этот файл может быть сгенерирован с использованием открытого ключа OpenSSH (как описано в разделе "Регенерация открытых ключей" выше), используя:
ssh-keygen -f ~/.ssh/id_rsa -y -e -m pem > ~/.ssh/id_rsa.pem
Кроме того, вы можете использовать открытый ключ OpenSSH, используя:
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pem > ~/.ssh/id_rsa.pem