В течение многих лет я использовал такую строку для автоматического создания пары ключей SSH без ключевой фразы:

/usr/bin/ssh-keygen -q -b 1024 -N "" -C "vagrant@labman01" -f keys/labkey

Обычно я вызываю ssh-keygen из Ansible play, а затем продолжаю предоставлять ключ нескольким бродячим гостевым машинам при создании лабораторной среды.

Тем не менее, после обновления до MacOS Mojave (10.14.2) сгенерированный ключ позже сообщается как недействительный Ansible на гостях Linux, а попытка использовать ключ вручную на гостевой системе Linux вызывает приглашение для ключевой фразы, как будто закрытый ключ защищен паролем.

Однако, делая то же самое на любом хост-компьютере Linux, вы создаете действительный ключ.

Есть ли какая-то новая хитрость для создания правильной пары ключей без пароля в MacOS Mojave?

ОБНОВИТЬ

Исследуя сгенерированный ключевой файл, я заметил, что MacOS Mojave использует -----BEGIN OPENSSH PRIVATE KEY----- вместо -----BEGIN RSA PRIVATE KEY----- в качестве заголовка PEM. То же самое для нижнего колонтитула.

Похоже, что изменение формата ключа в OpenSSH 7.8 и более поздних версиях. Простое изменение заголовка не решает проблему.

2 ответа2

1

Вы можете попытаться сгенерировать ключ с непустым паролем и после этого установить пустой пароль:

ssh-keygen -b 2048 -t rsa -q -N "password" -f <your_key_file>
ssh-keygen -p -P "password" -N "" -f <your_key_file>

В случае неправильного заголовка вы можете попробовать изменить текст:

sed -i -e 's/OPENSSH/RSA/' <your_key_file>
1

Похоже, что в OpenSSH_7.8p1 и более поздних версиях файл ключа по умолчанию изменился . MacOS Mojave 10.14.2 поставляется с OpenSSH_7.9p1 .

Добавление -m PEM изменяет поведение ssh-keygen для использования устаревшего формата закрытого ключа PEM, который был по умолчанию в предыдущих выпусках Mac OS.

/usr/bin/ssh-keygen -q -m PEM -b 1024 -N "" -C "vagrant@labman01" -f keys/labkey

К сожалению, опция -m не поддерживается в более ранних версиях OpenSSH, поэтому для поддержки старых выпусков ОС необходимо поддерживать код конкретной версии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .