Традиционно 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.)