Ошибка SSH при входе с использованием закрытого ключа: “недопустимый формат загруженного открытого ключа” и “ошибка в libcrypto”.

Вопрос или проблема

ОБНОВЛЕНО

Когда я пытаюсь сгенерировать открытый ключ, мне все еще выдается ошибка
“ошибка в libcrypto”

Load key “breakthis”: ошибка в libcrypto

Приватный ключ указан ниже

Я пытаюсь решить машину Hack the Box

Я смог получить приватный ключ, затем я конвертировал этот ключ в хеш для JOHNTHERIPPER и успешно его взломал

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


ssh -i id_rsa [email protected]

load pubkey "id_rsa": invalid format 

Load key "id_rsa": error in libcrypto

[email protected]'s password: 

В моем случае я скопировал файл ключа с помощью буфера обмена, что привело к созданию аналогичного файла, но без завершающего символа новой строки. Этого было достаточно, чтобы сбить libcrypto. Открытие файла в vim и :wq закрытие его было достаточно, чтобы добавить новую строку, и это решило мою проблему.

Больше информации

Вот что вам нужно для этого файла:

  • Концы строк LF (также известные как Unix). Не CRLF (также известные как Windows)
  • Завершающая новая строка (означает: последний символ всего файла должен быть новой строкой).

Чтобы убедиться, что у вас есть оба,
предположим, ваш файл ключа ~/.ssh/id_rsa, вы можете сделать это:

dos2unix ~/.ssh/id_rsa
vim --clean ~/.ssh/id_rsa

Когда окажетесь в vim, наберите :wq, затем нажмите клавишу return.

ОШИБКА: load pubkey “id_rsa”: invalid format

Это происходит, когда используется открытый ключ в ~/.ssh/config вместо использования приватного ключа.

Я исправил ошибку Load key "id_rsa": error in libcrypto, добавив символ управления LF (новая строка) в конце последней строки -----END OPENSSH PRIVATE KEY----- файла .pem.

До (не работает):

введите описание изображения здесь

После (работает):

введите описание изображения здесь

Обратите внимание на дополнительный символ управления LF в последней непустой строке. Можно добавить символ управления LF, просто нажав клавишу ENTER.

Команды, использованные для SSH на мой удаленный компьютер:

chmod 400 key.pem
ssh -i "key.pem" [email protected]

Обратите внимание: сообщение об ошибке может быть следующим:

  • Load key "id_rsa": error in libcrypto (я видел его на своем компьютере с Ubuntu).
  • Load key "key.pem": invalid format (я видел его на своем компьютере с Windows).

Чтобы показать управляющие символы конца строки в Notepad++:

введите описание изображения здесь

для будущих читателей.
Я использовал файл ключа ssh внутри YAML-файла Gitlab CI и постоянно получал сообщение error in libcrypto.
Я сделал 2 вещи, которые ИСПРАВИЛИ проблему:

  1. Просто изменил тип переменной с переменной FILE на ENV_VAR
  2. Использовал ssh-keygen -t ed25519 при генерации ключа. Похоже, gitlab не поддерживает ключи по умолчанию rsa.

После этого все заработало.

Также используйте это как базовый before_script:

  before_script:
    - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client wget gnupg -y )'
    - wget -qO- https://get.docker.com/gpg | apt-key add -
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
    - mkdir -p ~/.ssh
    - touch ~/.ssh/config
    - touch ~/.ssh/known_hosts
    - chmod -R 400 ~/.ssh
    - ssh-keyscan <ip> >> ~/.ssh/known_hosts
    - '[[ -f /.dockerinit ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

Я получил эту ошибку, когда использовал 2 аккаунта github с 2 ключами ssh, но избавился от нее, когда изменил файл конфигурации, как показано ниже,

myDir$ ssh -T [email protected]
Load key "/home/taxi/.ssh/mhmd_personal.pub": error in libcrypto
[email protected]: Permission denied (publickey).

От этого

Host *
  AddKeysToAgent yes
  IdentityFile ~/.ssh/mhmd_personal.pub
  # IdentityFile ~/.ssh/id_ed25519

к этому

Host *
  AddKeysToAgent yes
  IdentityFile ~/.ssh/mhmd_personal
  # IdentityFile ~/.ssh/id_ed25519

убрал расширение .pub из файла конфигурации.

что помогло мне, был ответ на этот вопрос

Я открыл ключ в puttygen и затем экспортировал новый ppk с использованием конверсии –> Экспортировать ключ OpenSSH

Я только что решил эту проблему. Проблема была вызвана форматом текста.

Замените на следующий формат ssh-ключа, который выглядит так:

-----BEGIN OPENSSH PRIVATE KEY-----
ENCODED KEY DATA HERE
-----END OPENSSH PRIVATE KEY-----

Итак, в моем случае файл приватного ключа просто не имел разрешений на чтение для владельца. После добавления разрешения на чтение (chmod u+r id_ecdsa) все заработало.

Обновленное решение для этого работает следующим образом

1 – установите права доступа на chmod 600 как для приватного ключа (id_rsa), так и для публичного (id_rsa.pub)

это избежит этой ошибки

"Permissions 0644 for '/root/.ssh/mad4dweb-imap.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/xxxxx.pub": bad permissions"

2 – когда вы подключаетесь к удаленному серверу, вы должны использовать для этого приватный ключ (id_rsa), а не тот, который имеет расширение .pub, иначе вы получите ошибку

" ssh -T cp
Load key "/root/.ssh/xxxxx.pub": error in libcrypto
: Permission denied (publickey,password)."

https://superuser.com/questions/1724602/unable-to-ssh-with-key-into-my-synology-nas

.

Ответ или решение

Если вы сталкиваетесь с проблемами при входе в систему через SSH с использованием закрытого ключа, такими как "loaded pubkey invalid format" и "error in libcrypto", есть несколько шагов и рекомендаций, которые помогут устранить эти ошибки. Ниже подробно рассмотрим возможные причины и их решения.

1. Проверка формата файла закрытого ключа

Проблема "invalid format" может возникнуть, если файл закрытого ключа имеет неправильный формат текстового представления. Убедитесь, что содержимое файла соответствует правильному шаблону:

-----BEGIN OPENSSH PRIVATE KEY-----
ENCODED KEY DATA HERE
-----END OPENSSH PRIVATE KEY-----

Действие: Откройте файл в текстовом редакторе, таком как vim, и убедитесь, что каждая строка начинается и заканчивается правильно. Также, проверьте наличие пробелов или недостающих строк.

2. Настройка окончания строк и пустых строк

Другая распространенная причина ошибки связана с окончанием строк. Обратите внимание на то, что в Unix-системах строки завершаются LF (Line Feed), а не CRLF (Carriage Return + Line Feed), как в Windows.

Действие:

  • Используйте команду dos2unix, чтобы конвертировать окончания строк: dos2unix ~/.ssh/id_rsa.
  • Затем откройте файл в vim: vim --clean ~/.ssh/id_rsa, введите :wq и нажмите Enter, чтобы убедиться, что файл корректно сохранен с нужными окончаниями строк.

3. Проверка прав доступа на файлы

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

Действие: Установите права доступа для файла закрытого ключа:

chmod 600 ~/.ssh/id_rsa

4. Использование правильного ключа для подключения

Убедитесь, что для подключения используется именно закрытый ключ, а не публичный (с расширением .pub).

Действие: При выполнении команды ssh укажите закрытый ключ:

ssh -i ~/.ssh/id_rsa [email protected]

5. Исправление ошибок в конфигурации SSH

Если вы используете файл конфигурации SSH (~/.ssh/config), убедитесь, что в нем указаны правильные значения.

Действие: Проверьте файл конфигурации и убедитесь, что он ссылается на закрытый ключ:

Host *
  IdentityFile ~/.ssh/id_rsa

6. Другие факторы и обновления

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

Действия:

  • Используйте конвертеры и генераторы ключей, такие как puttygen, чтобы преобразовать ключ в нужный формат.
  • Убедитесь, что все используемые инструменты и библиотеки, такие как libcrypto, обновлены до последней версии.

Предприняв данные шаги, вы значительно повысите шансы успешного решения возникших проблем с подключением по SSH.

Оцените материал
Добавить комментарий

Капча загружается...