Традиционно OpenSSH использовал тот же формат закрытого ключа, что и старый формат PEM, используемый OpenSSL. (Поскольку он использует OpenSSL для анализа ключа, он также примет более новый формат PKCS # 8.)
Таким образом, проблема может быть одной из:
Ваша версия OpenSSL отказывается загружать этот формат ключа. Возможно, он случайно включил режим FIPS и отказывается от каких-либо алгоритмов, кроме тех, которые являются частью его первоначальной проверки FIPS?
Попробуйте загрузить ключ в инструмент командной строки openssl
(который, да, может также быть связан с другим libcrypto, и вы должны проверить с помощью ldd):
openssl rsa -noout -text < id_rsa
openssl pkey -noout -text < id_rsa
Попробуйте преобразовать его в формат PKCS # 8:
umask 077
openssl pkey < id_rsa > id_rsa.pkcs8
ssh-add id_rsa.pkcs8
Ваш OpenSSH был собран без поддержки OpenSSL. Несмотря на то, что ssh -V
говорит, что поддержка включена, это не означает, что двоичный файл ssh-add
одинаков - он может быть получен из другой частичной установки.
Введите type -a ssh
и type -a ssh-add
чтобы сравнить места установки.
Когда вы знаете путь, используйте ldd /usr/bin/ssh-add
чтобы убедиться, что он связан с libcrypto.so
(криптографическая библиотека OpenSSL).
Если ничего не работает, попробуйте конвертировать ваш ключ в новый формат OpenSSH, используя ... PuTTY. Установите пакет putty
для Fedora и используйте:
puttygen id_rsa -o id_rsa.newformat -O private-openssh-new
ssh-add id_rsa.newformat
Также своеобразно: GNOME как-то удается добавить ключ при входе в систему с помощью морского конька.
Более старые версии GNOME Keyring имеют внутреннюю копию кода агента SSH и не зависят от системы OpenSSH. Таким образом, они примут ключи, которые не будут приняты вашим OpenSSH. (Но с другой стороны, это означает серьезное отставание с точки зрения поддержки функций (таких как ключи Ed25519), и последняя версия GNOME Keyring просто использует вместо этого системный ssh-agent.)