Формат открытого ключа SSH

11

У меня есть открытый ключ в формате:

---- BEGIN SSH2 PUBLIC KEY ----

Comment: "somename-20060227"
AAAAB3NzaC1yc2EAAAABJQAAAIBmhLUTJiP[and so on]==

---- END SSH2 PUBLIC KEY ----

Обычно я вижу ключи в таком формате:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAqof[and so on]

Могу ли я просто скопировать первый ключ в файл author_keys или мне нужно как-то его изменить, чтобы он выглядел как второй? Я думаю, что первый был сгенерирован PUTTYgen, а второй сгенерирован ssh-keygen.

Hans
источник

Ответы:

16

используйте ssh-keygen -iдля преобразования SSH2-совместимого формата в OpenSSH-совместимый формат.

от man ssh-keygen:

-i Эта опция будет считывать незашифрованный файл закрытого (или открытого) ключа в формате, совместимом с SSH2, и печатать открытый (или открытый) ключ, совместимый с OpenSSH, в стандартный вывод. ssh-keygen также считывает формат открытого ключа RFC 4716 SSH. Эта опция позволяет импортировать ключи из нескольких коммерческих реализаций SSH.

Alexus
источник
4

Вы должны преобразовать открытый ключ в соглашение openssh:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBmhLUTJiP[and so on]== somename-20060227

Также убедитесь, что ключ занимает ровно одну строку, и при копировании не было разрывов строк.

Дмитрий Чубаров
источник
4

Это полный, правильный ответ:

ssh-keygen -i -m PKCS8 -f public-key.pem

Boeboe
источник
1
«RFC4716» является форматом ключа по умолчанию, и -m, по-видимому, для указания формата INPUT в этом случае, а не вывода, так что вы правы.
JimNim
Технически «правильный» ответ alexus НЕ является неправильным, поскольку в этом ответе не прописан полный синтаксис - он указывает только на то, какой первичный флаг следует использовать, оставляя необходимость проверять синтаксис -i / использование на странице man.
JimNim
2

Просто перепишите ваш ключ в формате, подходящем для authorized_keys:

тип ключа

Имейте в виду, что завершающий символ "==" является обязательным заполнителем, чтобы длина ключа была равна желаемой длине.

Kondybas
источник
4
Трейлинг "==" - заполнение Base64
Эндрю
как я узнаю, что это RSA или DSA?
Ганс