Формат открытого ключа 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.

Ответы:


16

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

от man ssh-keygen:

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


4

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

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

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


4

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

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


1
«RFC4716» является форматом ключа по умолчанию, и -m, по-видимому, для указания формата INPUT в этом случае, а не вывода, так что вы правы.
JimNim

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

2

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

тип ключа

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


4
Трейлинг "==" - заполнение Base64
Эндрю

как я узнаю, что это RSA или DSA?
Ганс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.