Я использовал PuTTY Key Generator для генерации 4096-битного ключа RSA-2 с парольной фразой.
Я сохраняю .ppk и открытый ключ формата openSSL. Открытый ключ в формате замазки не работает.
В любом случае моя ошибка такова:
$ ssh -T git@github.com
key_load_public: invalid format
Enter passphrase for key '/c/Users/Dan/.ssh/id_rsa':
Hi Dan! You've successfully authenticated, but GitHub does not provide shell access.
В чем проблема?
Я использую Pageant для загрузки ключей и Git Bash, чтобы попробовать ssh-соединение. Я также загрузил ключ в GitHub, не уверен, что делаю не так.
Я пробовал добавить новую строку и не добавлять новую строку в GitHub
git
github
ssh
public-key
JordanGS
источник
источник
key_load_public: invalid format
правильно, когда я выполняю команду, прежде чем я ввожу кодовую фразу?Ответы:
Как упомянул Роланд в своем ответе, это предупреждение о том, что
ssh-agent
он не понимает формат открытого ключа, и даже в этом случае открытый ключ не будет использоваться локально.Тем не менее, я также могу уточнить и ответить, почему это предупреждение. Это просто сводится к тому, что генератор ключей PuTTY генерирует два разных формата открытых ключей в зависимости от того, что вы делаете в программе.
Примечание. В моем объяснении ключевые файлы, которые я буду использовать / генерировать, будут именоваться
id_rsa
с соответствующими расширениями. Кроме того, для удобства копирования и вставки предполагается, что родительская папка ключей - это~/.ssh/
. Отрегулируйте эти детали в соответствии со своими потребностями.Форматы
Ссылка на соответствующую документацию PuTTY
СШ-2
Когда вы сохраняете ключ с помощью генератора ключей PuTTY с помощью кнопки «Сохранить открытый ключ», он будет сохранен в формате, определенном RFC 4716 .
Пример:
OpenSSH
Вопреки распространенному мнению, этот формат не сохраняется генератором. Однако он создается и отображается в текстовом поле под названием «Открытый ключ для вставки в файл авторизованных ключей OpenSSH». Чтобы сохранить его как файл, вам нужно вручную скопировать его из текстового поля и вставить в новый текстовый файл.
Для ключа, показанного выше, это будет:
Формат ключа прост,
ssh-rsa <signature> <comment>
и его можно создать, переставив файл в формате SSH-2.Восстановление открытых ключей
Если вы используете
ssh-agent
, у вас, вероятно, также будет доступ кssh-keygen
.Если у вас есть закрытый ключ OpenSSH (
id_rsa
файл), вы можете создать файл открытого ключа OpenSSH, используя:Если у вас есть только закрытый ключ PUTTY (
id_rsa.ppk
файл), вам нужно сначала его преобразовать.id_rsa.ppk
файлid_rsa
(без расширения)Теперь, когда у вас есть закрытый ключ OpenSSH, вы можете использовать
ssh-keygen
инструмент, как указано выше, для выполнения манипуляций с ключом.Бонус: формат открытого ключа PKCS # 1 с кодировкой PEM
Честно говоря, я не знаю, для чего используется этот ключ, потому что он мне не нужен. Но у меня есть это в своих записях, которые я собирал на протяжении многих лет, и я включу его сюда для благости. Файл будет выглядеть так:
Этот файл можно сгенерировать с помощью закрытого ключа OpenSSH (созданного в разделе «Восстановление открытых ключей» выше), используя:
В качестве альтернативы вы можете использовать открытый ключ OpenSSH, используя:
Ссылки:
источник
.ppk
в.pub
файл. Побочный эффект промежуточногоid_rsa
закрытого ключа, фактически используемого другой программой, не учитывался. Я изменил язык «предпочтительно без расширения» на «(без расширения)», чтобы устранить двусмысленность. Я также воспользовался шансом перефразировать некоторые недовольства, возникающие всякий раз, когда я оглядываюсь на этот ответ. Спасибо за ваш вклад.ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub
это решило это. СПАСИБО!Есть простое решение, если вы можете установить и использовать инструмент puttygen. Ниже приведены шаги. У вас должна быть кодовая фраза закрытого ключа.
Шаг 1: Загрузите последнюю версию puttygen и откройте puttygen
Шаг 2: Загрузите существующий файл закрытого ключа, см. изображение ниже
Шаг 3: Введите кодовую фразу для ключа, если ее спросят, и нажмите ОК
Шаг 4: как показано на изображении ниже, выберите вкладку меню «Преобразование» и выберите «Экспорт ключа OpenSSH»
Сохраните новый файл закрытого ключа в предпочтительном месте и используйте его соответствующим образом.
источник
load pubkey invalid format
предупреждение, когда экспортировал ключ с помощью ключа Export OpenSSH . Он исчез при использовании ключа Export OpenSSH (принудительный новый формат файла) .apt install putty-tools
илиyum install putty
потомsudo puttygen private.ppk -O private-openssh-new -o private.pem
TL; DR: также убедитесь, что вы
id_rsa.pub
находитесь в ascii / UTF-8.У меня была та же проблема, однако только принятый ответ не сработал из-за кодировки текста, что было дополнительной проблемой, которую легко пропустить.
Когда я бегу
в Windows PowerShell вывод сохраняется
id_rsa.pub
в кодировке UTF-16 LE BOM , а не в UTF-8 . Это свойство некоторых установок PowerShell, которое обсуждалось в разделе Использование PowerShell для записи файла в UTF-8 без спецификации . Судя по всему, OpenSSH не распознает прежнюю кодировку текста и выдает идентичную ошибку:Копирование и вставка вывода
ssh-keygen -f ~/.ssh/id_rsa -y
в текстовый редактор - самый простой способ решить эту проблему.PS Это могло быть дополнением к принятому ответу , но у меня пока недостаточно кармы, чтобы здесь комментировать.
источник
ssh-keygen -f ~/.ssh/id_rsa -y | ac ~/.ssh/id_rsa.pub
Вместо этого вы бы использовали .В случае, если вы копируете свой открытый ключ с помощью буфера обмена и вставляете его, может случиться так, что строка открытого ключа может быть повреждена и содержит новую строку.
Убедитесь, что ваша строка открытого ключа сформирована как одна строка.
источник
Кажется, что
ssh
не может прочитать ваш открытый ключ. Но это не имеет значения.Вы загружаете свой открытый ключ в github, но аутентифицируетесь, используя свой закрытый ключ . См., Например, раздел ФАЙЛЫ в
ssh(1)
.источник
Вместо того, чтобы напрямую сохранять закрытый ключ, перейдите в раздел Конверсии и экспорт SSh-ключа. Была такая же проблема, и это сработало для меня
источник
У меня было такое же предупреждение. Это был очень старый ключ. Я восстановил ключ на текущем OpenSSH 7, и ошибка исчезла.
источник
Ошибка вводит в заблуждение -
pubkey
при указании на файл закрытого ключа написано " "~/.ssh/id_rsa
.В моем случае это был просто отсутствующий открытый ключ (так как я не восстановил его из хранилища).
ДЕТАЛИ
Раньше я пропускал развертывание
~/.ssh/id_rsa.pub
автоматическими скриптами.Все
ssh
обычаи работали, но ошибка заставила меня задуматься о возможном беспорядке.Вовсе нет -
strace
помогло заметить, что триггером на самом деле был*.pub
файл:источник
Итак, после обновления у меня была такая же проблема. Я использовал PEM
key_file
без расширения и просто добавил, что.pem
исправил мою проблему. Теперь файл естьkey_file.pem
.источник
Если вы используете Windows 10 со встроенным SSH, по состоянию на август 2020 года он поддерживает только ключи ed25519. Вы получите сообщение об
key_load_public: invalid format
ошибке, если используете, например, ключ RSA.В соответствии с этой проблемой GitHub она должна быть исправлена через Центр обновления Windows где-то в 2020 году. Таким образом, одно из решений - просто дождаться отправки обновления.
Если вы не можете дождаться, обходной путь - создать новый ключ ed25519, что в любом случае является хорошим советом .
Вы можете использовать его, например, с github, но некоторые старые системы могут не поддерживать этот новый формат.
Если после создания ключа вы используете любую из перечисленных ниже функций, не забудьте обновить их!
~\.ssh\config
все еще может указывать на старый ключ.ssh-add
командуисточник