предыдущий ответ является неправильным. загрузите openvpn 2.1.3 и использование - allow-pull-fqdn
HTH,
JJK
Проверьте содержимое имя_ключа
, если агент сообщает недопустимый формат
, то что-то не так с ключом - например ... вы уверены, что правильный ключ? Даже если это не тот закрытый ключ, который вам нужен, агент ssh не вернет недопустимый формат
, если ключ работает, вы просто не сможете подключиться. По какой-то причине вы могли поместить туда свой открытый ключ. Проверь!
Я просто столкнулся с этим сегодня, когда писал некоторому мерзавцу, отмечающему 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 - я предполагаю, что у Вас должна быть новая строка в конце Вашего закрытого ключа.
В моем случае оказалось, что у меня были новые строки между запустить/закончить "заголовками" и ключевыми данными:
-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----
Удаление дополнительных новых строк, таким образом, это стало
-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----
, решило мою проблему.
Убедитесь, что вы переименовали свой ЧАСТНЫЙ ключ и удалили расширение файла, которое является проблемой.
Шаги, которые я предпринял
Создайте свой открытый ключ:
Убедитесь, что вы находитесь в в том же каталоге, что и у вас есть закрытый ключ
Как создать открытый ключ:
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
Я просил openssh использовать определенный файл идентификации, указав его в файле .ssh / config.
Исходная рабочая конфигурация имела
IdentityFile = <path to public key file>
Это перестало работать без каких-либо изменений. Немного подумав, я заменил «путь к файлу открытого ключа» выше на «путь к файлу закрытого ключа». Это сработало. Причина в том, что как файлы с открытым, так и закрытым ключом имеют большие числа, связанные с peudoprime согласно алгоритму RSA. Если вы замените файл закрытого ключа файлом открытого ключа, эти криптографические числа не будут правильно извлечены из блока base64, сохраненного в файлах ключей. Кажется, что некоторые версии ssh могут определить расширение .pub и использовать его для определения правильного файла закрытого ключа - а другие версии этого не делают. Это еще один способ возникновения ошибки. Надеюсь, это кому-то поможет.
У меня возникла эта проблема, потому что у меня был ключ в ~ / .ssh, который на самом деле был недопустимым форматом, и у меня было много ключей, что означало, что SSH пробовал их все, хотя я указал мой личный файл в команде. Он просто терпит неудачу, потому что, я думаю, он может попробовать только 5 ключей, а затем оставил мне эту ошибку, которая была законной, только для неправильного файла идентификации. Решением было просто использовать IdentitiesOnly yes
в моем ~ / .ssh / config.
എനിക്ക് ഈ പിശക് ഉണ്ടായിരുന്നു കാരണം കീ ഫയലിന്റെ തുടക്കത്തിൽ ഒരു ശൂന്യ ലൈൻ ഉണ്ടായിരുന്നു. നിങ്ങൾ പൂച്ചയാണെങ്കിൽ
ഇത് ഒഴിവാക്കാം.
നിങ്ങളുടെ സ്വകാര്യ കീയിൽ ഒരു പാസ്ഫ്രെയ്സ് ഉണ്ടെങ്കിൽ ssh (കുറഞ്ഞത് ചില പതിപ്പുകളെങ്കിലും) പുറപ്പെടുവിക്കുന്ന പിശക് ഇതാണ്. നിങ്ങൾ കണക്റ്റുചെയ്യാൻ ശ്രമിക്കുമ്പോൾ പാസ്ഫ്രെയ്സ് തെറ്റാണ്.
(പ്രത്യേകിച്ചും, ഇത് എനിക്ക് സംഭവിച്ചത്: OpenSSH_7.6p1, LibreSSL 2.6.2, ഇത് മാക് ഒഎസ് എക്സ് 10.13.6 നുള്ള അന്തർനിർമ്മിത എസ്എസ്എച്ച് ആണ്.)
അതിനാൽ നിങ്ങൾ ശരിയായ പാസ്ഫ്രെയ്സ് ഉപയോഗിക്കുന്നുണ്ടെന്നും ക്യാപ്സ് ലോക്ക് ഓഫാണെന്നും രണ്ടുതവണ പരിശോധിക്കുക.
Для решения этой проблемы я использую для преобразования файла PPK с помощью PuttyGen
.
Сначала загрузите urkey.PPK
, затем в меню преобразования нажмите «Экспорт в формат файла Openssh». Будет создан файл newkey.
теперь, ssh -i "newkey" (скрытый) Надеюсь, это поможет.
У меня была такая же проблема, и оказалось, что у меня в файле по какой-то причине были разделители строк в стиле Windows (CRLF) .
Кроме того, файл должен заканчиваться одним LF.
Снова исправляем те вещи, которые сделали модные.
Вы должны преобразовать свой ключ .ppk в ключ OpenSSH
Вот как это сделать :
После недавнего обновления Fedora 32 я начал получать это предупреждение при подключении к удаленным хостам.
Я решил проблему, добавив pkcs11: в параметр IdentityFile в моем .ssh/config следующим образом:
IdentityFile pkcs11:~/.ssh/my_key.pem
Для справки, выдержка из ssh_config man-страница:
Идентификатор аутентификации также может быть указан в виде URI PKCS#11, начинающегося со строки pkcs11:.
Вы регистрируетесь не с тем пользователем
В моем случае я пытался подключиться к экземпляру Amazon AWS EC2, но получил сообщение об ошибке
загрузить публичный ключ «MyPrivateKey.pem» : недопустимый формат
Это произошло из-за того, что я пытался войти в систему с неправильным пользователем (пользователь ec2)
Я использовал машину Ubuntu с пользователем ubuntu вместо пользователь ec2 (как указано в официальной серверной ОС Amazon Linux).
Но почему эта ошибка?
Оказывается, Amazon использует старый формат (путтиген говорит при загрузке «открытый ключ ssh-2 (старый формат pem)»), который не нравится openssh. очень много, так что это действительно предупреждение, а не ошибка.
Настоящая ошибка (на этом сервере нет такого пользователя) скрыта сервером (иначе вы могли бы перебором имен для входа), но вместо этого отображается "Соединение закрыто".
Вы можете найти имя, которое вы используете для подключения к своему компьютеру в AWS, в разделе «Действия»> «Подключиться».
Просто следуйте ответу "Ras", то есть используйте PuTTYgen для преобразования в формат OpenSSH.
Начиная с openssh 7.6 по умолчанию используется новый более безопасный формат. Вы можете принудительно преобразовать его в этот формат, используя приведенные ниже команды, чтобы изменить пароль ключа. Если у вас нет и/или вы не хотите пароль, вы можете просто нажать Enter, и он все равно перезапишет ключ в новом формате
ssh-keygen -f ~/.ssh/id_rsa -p
Если вы получаете предупреждение о недопустимом формате открытого ключа, но команда по-прежнему работает, это может быть связано с тем, что у вас есть только файл закрытого ключа и вы используете OpenSSH 8.3.
OpenSSH 8.3 включает в себя изменение клиента ssh, где он ищет файл открытого ключа, соответствующий закрытому ключу, и выводит этот load pubkey "/home/user/.ssh/id.rsa": предупреждение о недопустимом формате
, но подключение продолжается успешно. Инструменты, использующие ssh, такие как scp
или git
, могут показывать key_load_public: неверный формат
.
Клиенту не нужен публичный ключ при подключении, только закрытый ключ.Так что эта проверка бессмысленна и она уже удалена вышестоящим коммитом, но не находится в релизе (пока).
Есть обсуждение об этом на форуме ArchLinux.
Для всех, кто пробовал 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.
Как ни странно, ошибка говорит "pubkey
", указывая на private ключевой файл.
Отсутствие открытого файла ключа (или другие проблемы с ним) вызывает эту ошибку – подробности см. в этом ответе.
Я столкнулся с проблемой совместимости в Win32-OpenSSH 8.1.
Ни один из приведенных здесь ответов мне не помог, поэтому я нашел свой способ: преобразовать ключ в новый формат с помощью утилиты PuTTYgen.
puttygen
В моем случае это произошло из-за отсутствия пустой строки между 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
...
Я получил эту ошибку, когда использовал свой открытый ключ с ssh-add. Я должен был использовать закрытый ключ. Открытый ключ может вызвать эту ошибку.
ssh-add rsakey.pub
Error loading key "rsakey.pub": invalid format
Тем не менее, это нормально:
ssh-add rsakey
В моем случае проблема заключалась в том, что закрытый ключ был в следующем формате:
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
тогда как сервер SSH ожидал следующий формат:
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
У меня была похожая ошибка Загрузить ключ "/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 продолжает запрашивать парольную фразу.
У меня была эта проблема с Mac OSX 11.4 и версией ssh OpenSSH_8.1p1, LibreSSL 2.7.3
. Я пробовал все другие решения, и ничего не получалось (т. е. я регенерировал ключи, пробовал новые строки и т. д.).
Затем я прочитал это в документации GitHub и, добавив следующее в мой ~/.ssh/config
, я больше не получал ошибку
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Я сделал что-то вроде информации здесь https://github.com/marketplace/actions/webfactory-ssh-agent
Формат закрытого ключа SSH Если закрытый ключ не в формате PEM, вы увидите сообщение Ошибка загрузки ключа "(stdin)": сообщение о недопустимом формате.
Используйте ssh-keygen -p -f путь/к/вашему/ключу -m pem, чтобы преобразовать файл ключа в формат PEM, но сначала обязательно сделайте резервную копию файла.
Это решило мою проблему.
Если вы используете Windows, используя Cygwin, Gitbash, MSYS или аналогичные инструменты, попробуйте запустить команду в повышенном режиме(с правами администратора).
Мне пришлось сделать это, чтобы повторно-экспортировать файл открытого ключа. Если вы используете файл .ssh/config
, убедитесь, что там есть ссылка на файл закрытого ключа IdentityFile ~/.ssh/id_rsa
.
Создание файла с закрытым ключом с помощью puttygen также приведет к аналогичным сообщениям об ошибках, используйте OpenSSH для создания пары с закрытым-открытым ключом-.
Использование файла открытого ключа (~/.ssh/id_rsa.pub)в качестве файла идентификации (IdentityFile в.ssh/config)приведет к вводящим в заблуждение сообщениям об ошибках, например
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
Проблема решена.