Format Kunci Publik SSH

11

Saya memiliki kunci publik dalam format:

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

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

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

Biasanya saya melihat kunci dalam format seperti ini:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAqof[and so on]

Bisakah saya menyalin kunci pertama dalam file Authorized_key atau saya harus memodifikasinya sehingga terlihat seperti yang kedua? Saya pikir yang pertama dihasilkan oleh PUTTYgen sedangkan yang kedua dihasilkan oleh ssh-keygen.

Hans
sumber

Jawaban:

16

gunakan ssh-keygen -iuntuk mengonversi format yang kompatibel dengan SSH2 ke format yang kompatibel dengan OpenSSH.

dari man ssh-keygen:

-i Opsi ini akan membaca file kunci privat (atau publik) yang tidak dienkripsi dalam format yang kompatibel dengan SSH2 dan mencetak kunci privat (atau publik) yang kompatibel dengan OpenSSH ke stdout. ssh-keygen juga membaca Format File Kunci Publik RFC 4716 SSH. Opsi ini memungkinkan mengimpor kunci dari beberapa implementasi SSH komersial.

alexus
sumber
4

Anda harus mengonversi kunci publik ke konvensi openssh:

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

Pastikan juga bahwa kunci menempati tepat satu baris dan tidak ada jeda baris yang diperkenalkan saat menyalin.

Dmitri Chubarov
sumber
4

Ini jawaban yang lengkap dan benar:

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

Boeboe
sumber
1
"RFC4716" adalah format key_format default, dan -m tampaknya untuk menentukan format INPUT dalam contoh ini, bukan output, jadi Anda benar.
JimNim
Secara teknis, jawaban 'benar' alexus 'TIDAK salah, karena jawaban itu tidak mengeja sintaksis lengkap - hanya menunjuk ke flag utama mana yang harus digunakan, meninggalkan kebutuhan untuk memeriksa -i sintaks / penggunaan di halaman manual.
JimNim
2

Cukup tulis ulang kunci Anda dalam format yang cocok untuk authorized_keys:

keytype keybody keyname

Perlu diingat bahwa trailing "==" adalah placeholder yang diperlukan untuk menjaga keylength sama dengan panjang yang diinginkan.

Kondybas
sumber
4
Trailing "==" adalah padding Base64
Andrew
bagaimana saya tahu apakah RSA atau DSA-nya?
Hans