AWS EC2 menunjukkan sidik jari SSH2, bukan sidik jari OpenSSH yang diharapkan semua orang. Itu tidak mengatakan ini di UI.
Ini juga menunjukkan dua jenis sidik jari yang sangat berbeda tergantung pada apakah kunci itu dihasilkan pada AWS dan diunduh, atau apakah Anda mengunggah kunci publik Anda sendiri.
Sidik jari dihasilkan dengan
ssh-keygen -l -f id_rsa
tidak akan cocok dengan yang ditunjukkan EC2. Anda bisa menggunakan alat AWS API untuk menghasilkan sidik jari dengan ec2-fingerprint-key
perintah, atau menggunakan OpenSSL untuk melakukannya.
Perhatikan bahwa jika Anda awalnya membuat kunci pada AWS, tetapi kemudian mengunggahnya lagi (katakanlah, ke wilayah lain) maka Anda akan mendapatkan sidik jari yang berbeda karena akan mengambil sidik jari RSA SSH2, daripada sha1 yang ditampilkan untuk kunci yang Anda dihasilkan pada AWS.
Menyenangkan, hai?
Di atas, test-generated
dihasilkan menggunakan AWS EC2. test-generated-reuploaded
adalah kunci publik dari kunci pribadi AWS yang dihasilkan, diekstraksi dengan ssh-keygen -y
dan diunggah lagi. Kunci ketiga test-uploaded
,, adalah kunci yang dibuat secara lokal ... tetapi ssh-keygen -l
sidik jari lokal adalah b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea
.
$ ssh-keygen -l -f theprivatekey
2048 b2:2c:86:d6:1e:58:c0:b0:15:97:ab:9b:93:e7:4e:ea
$ openssl pkey -in theprivatekey -pubout -outform DER | openssl md5 -c
Enter pass phrase for id_landp:
(stdin)= 91:bc:58:1f:ea:5d:51:2d:83:d3:6b:d7:6d:63:06:d2
Kunci dihasilkan secara lokal
Anda dapat menggunakan OpenSSL, seperti yang ditunjukkan oleh Daniel di forum AWS , untuk menghasilkan sidik jari dalam bentuk yang digunakan oleh AWS untuk menampilkan sidik jari untuk kunci publik yang diunggah (SSH2 MD5), seperti:
7a:58:3a:a3:df:ba:a3:09:be:b5:b4:0b:f5:5b:09:a0
Mereka dapat dihasilkan dengan mengekstraksi bagian publik dari kunci pribadi dan hashing menggunakan:
openssl pkey -in id_rsa -pubout -outform DER | openssl md5 -c
Kunci yang dihasilkan pada AWS
Jika sidik jari kunci yang ditunjukkan pada konsol AWS lebih panjang maka itu adalah kunci pribadi yang dihasilkan pada AWS, seperti:
ea:47:42:52:2c:25:43:76:65:f4:67:76:b9:70:b4:64:12:00:e4:5a
Dalam hal ini Anda perlu menggunakan perintah berikut, juga ditunjukkan oleh Daniel di forum AWS, untuk menghasilkan hash sha1 berdasarkan kunci pribadi:
openssl pkcs8 -in aws_private.pem -nocrypt -topk8 -outform DER | openssl sha1 -c
pada kunci pribadi / file sertifikat yang dihasilkan AWS yang diunduh. Ini akan bekerja pada kunci yang Anda konversi ke format OpenSSH juga.
Referensi
Lihat:
ssh
perintah, dengan versi yang lebih baru Anda membutuhkan pilihan -E untuk menentukan format md5:ssh-keygen -E md5 -l -f id_rsa
.Jika Anda hanya memiliki kunci publik, Anda dapat membuat sidik jari AWS sebagai berikut:
sumber
Ada sumber di AWS docs http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#verify-key-pair-fingerprints
Jika Anda membuat pasangan kunci menggunakan AWS, Anda dapat menggunakan alat OpenSSL untuk menghasilkan sidik jari dari file kunci pribadi:
Salinan
Jika Anda membuat pasangan kunci Anda menggunakan alat pihak ketiga dan mengunggah kunci publik ke AWS, Anda dapat menggunakan alat OpenSSL untuk menghasilkan sidik jari dari file kunci pribadi di mesin lokal Anda:
Salinan
Outputnya harus sesuai dengan sidik jari yang ditampilkan di konsol.
sumber
Inilah yang saya gunakan:
Ini menghasilkan sidik jari dari kunci publik, mirip dengan beberapa di atas.
sumber
Bagi kita yang menggunakan Python
sumber
ValueError: PEM encryption format not supported.
Berikut ini adalah skrip yang saya gunakan, tambahkan path skrip ke env. Terima kasih kepada J. Nak untuk jawabannya
sumber
Kalau-kalau ini bisa berguna: https://ssh-vault.com/post/fingerprint/
sebagai contoh:
Akan mencetak sidik jari untuk pengguna yang cocok dengan format yang digunakan AWS.
sumber
Java (menggunakan BouncyCastle). Jika konsol AWS menampilkan kunci yang lebih pendek, coba dengan MD5. (SHA1: 20 byte, MD5: 16 byte).
sumber