SSH Внезапно возвращается неверный формат

предыдущий ответ является неправильным. загрузите openvpn 2.1.3 и использование - allow-pull-fqdn

HTH,

JJK

22
задан 6 June 2017 в 15:06
29 ответов

Проверьте содержимое имя_ключа , если агент сообщает недопустимый формат , то что-то не так с ключом - например ... вы уверены, что правильный ключ? Даже если это не тот закрытый ключ, который вам нужен, агент ssh не вернет недопустимый формат , если ключ работает, вы просто не сможете подключиться. По какой-то причине вы могли поместить туда свой открытый ключ. Проверь!

13
ответ дан 28 November 2019 в 20:23

Я просто столкнулся с этим сегодня, когда писал некоторому мерзавцу, отмечающему utils для моего конвейера CI.

Здесь было различие между моими двумя ключами:

$ diff ~/.ssh/gitlab ~/.ssh/git_ssh_key
27c27
< -----END OPENSSH PRIVATE KEY-----
---
> -----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

я изменил свой код как так:

     with open(ssh_key_file, 'w') as skf:
-        skf.write(ssh_key)
+        skf.write(ssh_key + '\n')

И теперь мои ssh ключевые работы.

TL; DR - я предполагаю, что у Вас должна быть новая строка в конце Вашего закрытого ключа.

1
ответ дан 28 November 2019 в 20:23

В моем случае оказалось, что у меня были новые строки между запустить/закончить "заголовками" и ключевыми данными:

-----BEGIN RSA PRIVATE KEY-----

- Key data here -

-----END RSA PRIVATE KEY-----

Удаление дополнительных новых строк, таким образом, это стало

-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----

, решило мою проблему.

1
ответ дан 28 November 2019 в 20:23

Убедитесь, что вы переименовали свой ЧАСТНЫЙ ключ и удалили расширение файла, которое является проблемой.

Шаги, которые я предпринял

Создайте свой открытый ключ:

Убедитесь, что вы находитесь в в том же каталоге, что и у вас есть закрытый ключ

Как создать открытый ключ:

ssh-keygen -y -f Private-Key.pem > Public-key.pub

убедитесь, что общий ключ имеет расширение файла .pub

, после чего предоставьте соответствующие разрешения по соображениям безопасности:

chmod 600 Private-Key.pem
chmod 400 Public-key.pub

ТОГДА самое важная часть и причина, по которой вы получили ошибку «недопустимый формат»

Убедитесь, что вы переименовали свой ЧАСТНЫЙ ключ и удалили расширение файла:

Удалите .pem из вашего закрытого ключа.

mv Private-Key.pem Private-Key

или если на компьютере под управлением Windows переименовать закрытый ключ, с тем же именем просто удалите .pem

-2
ответ дан 28 November 2019 в 20:23

Используйте свой закрытый ключ вместо открытого.

0
ответ дан 28 November 2019 в 20:23

Я просил openssh использовать определенный файл идентификации, указав его в файле .ssh / config.

Исходная рабочая конфигурация имела

IdentityFile = <path to public key file> 

Это перестало работать без каких-либо изменений. Немного подумав, я заменил «путь к файлу открытого ключа» выше на «путь к файлу закрытого ключа». Это сработало. Причина в том, что как файлы с открытым, так и закрытым ключом имеют большие числа, связанные с peudoprime согласно алгоритму RSA. Если вы замените файл закрытого ключа файлом открытого ключа, эти криптографические числа не будут правильно извлечены из блока base64, сохраненного в файлах ключей. Кажется, что некоторые версии ssh могут определить расширение .pub и использовать его для определения правильного файла закрытого ключа - а другие версии этого не делают. Это еще один способ возникновения ошибки. Надеюсь, это кому-то поможет.

4
ответ дан 28 November 2019 в 20:23

У меня возникла эта проблема, потому что у меня был ключ в ~ / .ssh, который на самом деле был недопустимым форматом, и у меня было много ключей, что означало, что SSH пробовал их все, хотя я указал мой личный файл в команде. Он просто терпит неудачу, потому что, я думаю, он может попробовать только 5 ключей, а затем оставил мне эту ошибку, которая была законной, только для неправильного файла идентификации. Решением было просто использовать IdentitiesOnly yes в моем ~ / .ssh / config.

0
ответ дан 28 November 2019 в 20:23

എനിക്ക് ഈ പിശക് ഉണ്ടായിരുന്നു കാരണം കീ ഫയലിന്റെ തുടക്കത്തിൽ ഒരു ശൂന്യ ലൈൻ ഉണ്ടായിരുന്നു. നിങ്ങൾ പൂച്ചയാണെങ്കിൽ ഇത് ഒഴിവാക്കാം.

0
ответ дан 28 November 2019 в 20:23

നിങ്ങളുടെ സ്വകാര്യ കീയിൽ ഒരു പാസ്‌ഫ്രെയ്‌സ് ഉണ്ടെങ്കിൽ ssh (കുറഞ്ഞത് ചില പതിപ്പുകളെങ്കിലും) പുറപ്പെടുവിക്കുന്ന പിശക് ഇതാണ്. നിങ്ങൾ കണക്റ്റുചെയ്യാൻ ശ്രമിക്കുമ്പോൾ പാസ്‌ഫ്രെയ്‌സ് തെറ്റാണ്.

(പ്രത്യേകിച്ചും, ഇത് എനിക്ക് സംഭവിച്ചത്: OpenSSH_7.6p1, LibreSSL 2.6.2, ഇത് മാക് ഒഎസ് എക്സ് 10.13.6 നുള്ള അന്തർനിർമ്മിത എസ്എസ്എച്ച് ആണ്.)

അതിനാൽ നിങ്ങൾ ശരിയായ പാസ്‌ഫ്രെയ്‌സ് ഉപയോഗിക്കുന്നുണ്ടെന്നും ക്യാപ്‌സ് ലോക്ക് ഓഫാണെന്നും രണ്ടുതവണ പരിശോധിക്കുക.

0
ответ дан 28 November 2019 в 20:23

Для решения этой проблемы я использую для преобразования файла PPK с помощью PuttyGen .

Сначала загрузите urkey.PPK , затем в меню преобразования нажмите «Экспорт в формат файла Openssh». Будет создан файл newkey.

теперь, ssh -i "newkey" (скрытый) Надеюсь, это поможет.

13
ответ дан 28 November 2019 в 20:23

У меня была такая же проблема, и оказалось, что у меня в файле по какой-то причине были разделители строк в стиле Windows (CRLF) .

Кроме того, файл должен заканчиваться одним LF.

Снова исправляем те вещи, которые сделали модные.

2
ответ дан 28 November 2019 в 20:23

Вы должны преобразовать свой ключ .ppk в ключ OpenSSH

Вот как это сделать :

  1. Загрузите PuttyGen и сгенерируйте свою пару ключей ( если у вас нет готовой пары ключей). Сохраните закрытый ключ в своей папке (.ppk)
  2. Если у вас уже есть закрытый ключ, загрузите файл закрытого ключа (.ppk), нажав кнопку «Загрузить». В противном случае пропустите этот шаг.
  3. В меню «Конверсии» выберите «Экспорт ключа OpenSSH» и сохраните его в своей папке.
  4. Теперь вы готовы использовать ключ для входа на свой сервер без ввода пароля (я предполагаю, что вы уже установили открытый ключ в /root/.ssh/authorized_keys, chmod 600 /root/.ssh/authorized_keys и перезапущенный демон SSH)
1
ответ дан 28 November 2019 в 20:23

Моя проблема была связана с кодированием. В VSCode кодировка файла (который я создал с помощью Out-File в PowerShell) была UTF-16LE . Когда я переключился на UTF-8 , ключ был действителен.

0
ответ дан 24 March 2020 в 12:02

После недавнего обновления Fedora 32 я начал получать это предупреждение при подключении к удаленным хостам.

Я решил проблему, добавив pkcs11: в параметр IdentityFile в моем .ssh/config следующим образом:

IdentityFile pkcs11:~/.ssh/my_key.pem 

Для справки, выдержка из ssh_config man-страница:

Идентификатор аутентификации также может быть указан в виде URI PKCS#11, начинающегося со строки pkcs11:.

10
ответ дан 2 June 2020 в 09:08

Вы регистрируетесь не с тем пользователем

В моем случае я пытался подключиться к экземпляру Amazon AWS EC2, но получил сообщение об ошибке

загрузить публичный ключ «MyPrivateKey.pem» : недопустимый формат

Это произошло из-за того, что я пытался войти в систему с неправильным пользователем (пользователь ec2)

Я использовал машину Ubuntu с пользователем ubuntu вместо пользователь ec2 (как указано в официальной серверной ОС Amazon Linux).

Но почему эта ошибка?

Оказывается, Amazon использует старый формат (путтиген говорит при загрузке «открытый ключ ssh-2 (старый формат pem)»), который не нравится openssh. очень много, так что это действительно предупреждение, а не ошибка.

Настоящая ошибка (на этом сервере нет такого пользователя) скрыта сервером (иначе вы могли бы перебором имен для входа), но вместо этого отображается "Соединение закрыто".


Вы можете найти имя, которое вы используете для подключения к своему компьютеру в AWS, в разделе «Действия»> «Подключиться».


Как исправить предупреждение?

Просто следуйте ответу "Ras", то есть используйте PuTTYgen для преобразования в формат OpenSSH.

0
ответ дан 11 June 2020 в 16:35

Начиная с openssh 7.6 по умолчанию используется новый более безопасный формат. Вы можете принудительно преобразовать его в этот формат, используя приведенные ниже команды, чтобы изменить пароль ключа. Если у вас нет и/или вы не хотите пароль, вы можете просто нажать Enter, и он все равно перезапишет ключ в новом формате

ssh-keygen -f ~/.ssh/id_rsa -p
66
ответ дан 16 July 2020 в 10:03

Если вы получаете предупреждение о недопустимом формате открытого ключа, но команда по-прежнему работает, это может быть связано с тем, что у вас есть только файл закрытого ключа и вы используете OpenSSH 8.3.

OpenSSH 8.3 включает в себя изменение клиента ssh, где он ищет файл открытого ключа, соответствующий закрытому ключу, и выводит этот load pubkey "/home/user/.ssh/id.rsa": предупреждение о недопустимом формате, но подключение продолжается успешно. Инструменты, использующие ssh, такие как scp или git, могут показывать key_load_public: неверный формат.

Клиенту не нужен публичный ключ при подключении, только закрытый ключ.Так что эта проверка бессмысленна и она уже удалена вышестоящим коммитом, но не находится в релизе (пока).

Есть обсуждение об этом на форуме ArchLinux.

18
ответ дан 28 July 2020 в 12:31

Для всех, кто пробовал sudo puttygen ~/. ssh/your-key.pem -O private-openssh -o ~/.ssh/your-key-new.pem и получил сообщение об ошибке puttygen: эта команда не выполнит никаких полезных действий есть еще более новый формат, поэтому вам нужно изменить команду следующим образом:

sudo puttygen ~/.ssh/your-key.pem -O private-openssh-new -o ~/.ssh/your-key-new.pem

Я использовал ключ, сгенерированный AWS на Manjaro, который немного более передовой, чем в большинстве других дистрибутивов, все еще работал, но предупреждающее сообщение раздражало.

Для получения дополнительной информации вы можете использовать man puttygen, но соответствующий раздел приведен ниже:

  -O output-type
    Specify the type of output you want puttygen to produce. Acceptable options are:

    private
      Save the private key in a format usable by PuTTY. This will either be the standard SSH-1 key format, or PuTTY's own SSH-2 key format.

    public Save  the  public key only. For SSH-1 keys, the standard public key format will be used (`1024 37 5698745...'). For SSH-2 keys, the public key will be output in the format specified by
      RFC 4716, which is a multi-line text file beginning with the line `---- BEGIN SSH2 PUBLIC KEY ----'.

    public-openssh
      Save the public key only, in a format usable by OpenSSH. For SSH-1 keys, this output format behaves identically to public. For SSH-2 keys, the public key will be output in the  OpenSSH
      format, which is a single line (`ssh-rsa AAAAB3NzaC1yc2...').

    fingerprint
      Print the fingerprint of the public key. All fingerprinting algorithms are believed compatible with OpenSSH.

    private-openssh
      Save an SSH-2 private key in OpenSSH's format, using the oldest format available to maximise backward compatibility. This option is not permitted for SSH-1 keys.

    private-openssh-new
      As private-openssh, except that it forces the use of OpenSSH's newer format even for RSA, DSA, and ECDSA keys.

    private-sshcom
      Save an SSH-2 private key in ssh.com's format. This option is not permitted for SSH-1 keys.

    If no output type is specified, the default is private.
0
ответ дан 9 August 2020 в 13:20

Как ни странно, ошибка говорит "pubkey", указывая на private ключевой файл.

Отсутствие открытого файла ключа (или другие проблемы с ним) вызывает эту ошибку – подробности см. в этом ответе.

2
ответ дан 3 October 2020 в 09:47

Я столкнулся с проблемой совместимости в Win32-OpenSSH 8.1.

Ни один из приведенных здесь ответов мне не помог, поэтому я нашел свой способ: преобразовать ключ в новый формат с помощью утилиты PuTTYgen.

  1. Запустите новую версию puttygen
  2. Откройте ключ (Конверсии > Импортировать ключ). Введите парольную фразу.
  3. Сохранить ключ в новом формате OpenSSH (Конверсии > Экспортировать ключ OpenSSH (принудительно использовать новый формат файла))

enter image description here

3
ответ дан 18 November 2020 в 17:17

Я начал сталкиваться с этой проблемой, когда обновился до Ubuntu 20.10. Он использует OpenSSH_8.3p1.

Я исправил это с помощью:

ssh-keygen -y -f mykey.pem > mykey.pem.pub
2
ответ дан 6 January 2021 в 15:05

В моем случае это произошло из-за отсутствия пустой строки между DEK-Info и фактическими данными ключа. У меня было:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,6E6F6E65206F6620796F757220627573
VGhpcyBpcyBub3QgbXkgYWN0dWFsIGtleSBzb3JyeSB0byBkaXNhcHBvaW50IHlv
...

Но это должно было быть:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,6E6F6E65206F6620796F757220627573

VGhpcyBpcyBub3QgbXkgYWN0dWFsIGtleSBzb3JyeSB0byBkaXNhcHBvaW50IHlv
...
5
ответ дан 7 January 2021 в 17:23

Я получил эту ошибку, когда использовал свой открытый ключ с ssh-add. Я должен был использовать закрытый ключ. Открытый ключ может вызвать эту ошибку.

ssh-add rsakey.pub
Error loading key "rsakey.pub": invalid format

Тем не менее, это нормально:

ssh-add rsakey
0
ответ дан 13 January 2021 в 17:35

В моем случае проблема заключалась в том, что закрытый ключ был в следующем формате:

-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----

тогда как сервер SSH ожидал следующий формат:

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
1
ответ дан 1 February 2021 в 13:48

У меня была похожая ошибка Загрузить ключ "/root/.ssh/id_rsa": неверный формат при попытке

RUN echo "$ssh_prv_key" > /root/.ssh/id_rsa &&     chmod 600 /root/.ssh/id_rsa

Это привело к ошибкам типа identity файл /root/.ssh/id_rsa type -1 неверный формат и read_passphrase: невозможно открыть /dev/tty.

Правильно было бы использовать

COPY id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa

Объяснение решения: мой закрытый ключ был неправильно отформатирован — вместо множества строк он был передан как однострочный, и у вас может быть любая другая проблема с форматом, например, забытый " -" в начале или в конце, или что-то неправильное в конце строк, например, отсутствующий формат новой строки или дополнительная буква в конце строки.

См. Dockerfile: клонировать репозиторий с закрытым ключом без пароля. Ошибки: «агент аутентификации» или «read_passphrase: не удается открыть /dev/tty» подробнее, с основной идеей из Добавить приватный ключ к ssh-agent в файле docker, что опять же была идея из Gitlab CI/Docker: ssh-add продолжает запрашивать парольную фразу.

0
ответ дан 16 March 2021 в 01:30

У меня была эта проблема с Mac OSX 11.4 и версией ssh ​​OpenSSH_8.1p1, LibreSSL 2.7.3. Я пробовал все другие решения, и ничего не получалось (т. е. я регенерировал ключи, пробовал новые строки и т. д.).

Затем я прочитал это в документации GitHub и, добавив следующее в мой ~/.ssh/config, я больше не получал ошибку

Host *
    AddKeysToAgent yes
    UseKeychain yes
    IdentityFile ~/.ssh/id_rsa
1
ответ дан 1 August 2021 в 00:07

Я сделал что-то вроде информации здесь https://github.com/marketplace/actions/webfactory-ssh-agent

Формат закрытого ключа SSH Если закрытый ключ не в формате PEM, вы увидите сообщение Ошибка загрузки ключа "(stdin)": сообщение о недопустимом формате.

Используйте ssh-keygen -p -f путь/к/вашему/ключу -m pem, чтобы преобразовать файл ключа в формат PEM, но сначала обязательно сделайте резервную копию файла.

Это решило мою проблему.

0
ответ дан 17 August 2021 в 04:24

Если вы используете Windows, используя Cygwin, Gitbash, MSYS или аналогичные инструменты, попробуйте запустить команду в повышенном режиме(с правами администратора).

Мне пришлось сделать это, чтобы повторно-экспортировать файл открытого ключа. Если вы используете файл .ssh/config, убедитесь, что там есть ссылка на файл закрытого ключа IdentityFile ~/.ssh/id_rsa.

Создание файла с закрытым ключом с помощью puttygen также приведет к аналогичным сообщениям об ошибках, используйте OpenSSH для создания пары с закрытым-открытым ключом-.

Использование файла открытого ключа (~/.ssh/id_rsa.pub)в качестве файла идентификации (IdentityFile в.ssh/config)приведет к вводящим в заблуждение сообщениям об ошибках, например

  • недопустимый формат
  • тайм-аут соединения
0
ответ дан 11 October 2021 в 12:33

TL;DR

FWIW, сегодня я столкнулся с этой проблемой.

Я так и не понял, что новой установке Win32 "portable openssh" 8.0.p1 не понравилось в файлах ключей -Я просто создал новые ключи и добавил их на github и gitlab:

ssh-keygen -o -t rsa -b 4096 -C "New format OpenSSH for github" -f C:\Users\mburr\.ssh\github.mburr-precor.key-2.id_rsa

Подробности

У меня была рабочая установка OpenSSH из проектаhttps://github.com/PowerShell/openssh-portable(, установленная Chocolatey). Но несколько дней назад мне пришлось выполнить «ремонтную установку» Windows, и поэтому мне пришлось переустановить OpenSSH.

После этого мои ключи, используемые для аутентификации в github и gitlab, больше не будут работать, выдавая ошибку «неверный формат». Это были те же ключевые файлы, которые были в системе до (переустановки с восстановлением, которая не удалила эти файлы).

Я не обнаружил проблем с окончаниями строк (все LF и LF в конце файла). Ключи работали в системе Linux -, и позже я обнаружил, что они работают с OpenSSH, включенным в Git для Windows v2.33.1.

 using the Win32 "portable OpenSSH" (from https://github.com/PowerShell/openssh-portable as installed by Chocolatey)
# Private key file error: "invalid format"
#

C:\devtrees>"c:\Program Files\OpenSSH-Win64\ssh.exe" -V
OpenSSH_for_Windows_8.0p1, LibreSSL 2.6.5

C:\devtrees>"c:\Program Files\OpenSSH-Win64\ssh.exe" -F c:\util\emptyfile -i c:\users\mburr\.ssh\github.mburr.id_rsa -T git@github.com
Load key "c:\\users\\mburr\\.ssh\\github.mburr.id_rsa": invalid format
git@github.com: Permission denied (publickey).


#-------------------------------------------------------
# using the OpenSSH that comes with Git for Windows v2.33.1
# No problem with the private key
#

C:\devtrees>c:\git\usr\bin\ssh.exe -V
OpenSSH_8.8p1, OpenSSL 1.1.1l  24 Aug 2021

C:\devtrees>c:\git\usr\bin\ssh.exe -F c:\util\emptyfile -i c:\users\mburr\.ssh\github.mburr.id_rsa -T git@github.com
Enter passphrase for key 'c:\users\mburr\.ssh\github.mburr.id_rsa':
Hi mburr! You've successfully authenticated, but GitHub does not provide shell access.

(emptyfileименно так. Я указал его как файл конфигурации с -F, чтобы заставить ssh игнорировать~/.ssh/config)

Я так и не понял, что Win32 "portable openssh" 8.0.p1 не понравилось в файлах ключей -Я только что создал новые ключи и добавил их в github и gitlab:

ssh-keygen -o -t rsa -b 4096 -C "New format OpenSSH for github" -f C:\Users\mburr\.ssh\github.mburr-precor.key-2.id_rsa

Проблема решена.

0
ответ дан 28 October 2021 в 01:01

Теги

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