Saya memiliki file PEM yang saya tambahkan ke ssh-agent yang sedang berjalan:
$ file query.pem
query.pem: PEM RSA private key
$ ssh-add ./query.pem
Identity added: ./query.pem (./query.pem)
$ ssh-add -l | grep query
2048 ef:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ./query.pem (RSA)
Bagaimana saya bisa mendapatkan sidik jari kunci (yang saya lihat di ssh-agent) langsung dari file? Saya tahu ssh-keygen -l -f some_key
bekerja untuk kunci ssh "normal", tetapi tidak untuk file PEM.
Jika saya mencoba ssh-keygen pada file .pem, saya mendapatkan:
$ ssh-keygen -l -f ./query.pem
key_read: uudecode PRIVATE KEY----- failed
key_read: uudecode PRIVATE KEY----- failed
./query.pem is not a public key file.
Kunci ini dimulai dengan:
-----BEGIN RSA PRIVATE KEY-----
MIIEp.... etc.
sebagai lawan dari kunci pribadi "biasa", yang terlihat seperti:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E15F2.... etc.
ssh
openssl
certificate
fingerprint
Tidak dikenal
sumber
sumber
.ssh/id_rsa
file yang dihasilkan oleh OpenSSH menggunakan semua default IS file PEM. Kunci pribadi adalah PEM disandikan secara default. Bahkan Anda dapat menggunakan kunci RSA yang Anda hasilkan dengan OpenSSL langsung dengan OpenSSH.ssh-keygen -l
tidak dapat membaca file privatekey, meskipun operasissh-keygen
(danssh*
) lainnya melakukannya. Tetapi ketikassh-keygen
menghasilkan kunci itu menulis baik file privatekey misalnyaid_rsa
dan file publickey yang sesuai dengan.pub
menambahkan misalnyaid_rsa.pub
. Lamassh-keygen -l
akan mencoba menambahkan.pub
ke nama file yang Anda tentukan dan membaca file publickey itu.Jawaban:
Jika Anda ingin mengambil sidik jari dari file kunci publik Anda yang hilang, Anda dapat memulihkannya dari file kunci pribadi :
Maka Anda dapat memastikan sidik jari publik:
Pada beberapa sistem yang lebih baru, ini mencetak sidik jari SHA256 dari kunci tersebut. Anda dapat mencetak sidik jari MD5 dari tombol (bentuk titik dua) menggunakan opsi
-E
:Atau sebagai satu baris perintah :
sumber
AWS " Memverifikasi Sidik Jari Pasangan Kunci Anda " menyediakan dua garis satu yang menyelesaikan masalah, tergantung pada bagaimana kunci Anda dibuat.
Jika Anda membuat pasangan kunci menggunakan AWS:
Atau, jika Anda membuat pasangan kunci Anda dengan alat pihak ketiga:
(sidik jari redacted di output di atas)
sumber
Berikut ini adalah satu baris yang harus melakukan apa yang Anda inginkan tanpa memerlukan pembuatan file kunci publik secara lokal.
Ini menggunakan string bash di sini
<<<
agar stdin tersedia sebagai file biasa (/dev/stdin
) daripada sebuah pipa karenassh-keygen
hanya akan beroperasi pada file.Pada rilis 7.2 dari openssh
ssh-keygen
mendukung sidik jari dari input standar:Perhatikan bahwa perintah ini akan terputus dengan kunci pribadi yang menggunakan frasa sandi dan tidak menggunakan agen. Ini harus bekerja dengan file pem yang dihasilkan oleh AWS atau OpenStack yang tidak menggunakan kata sandi.
Lihat https://stackoverflow.com/questions/2635360/ssh-keygen-accepting-stdin untuk info lebih lanjut.
sumber
-l
juga mendukung membaca file privatekey (tetapi tidak dari stdin).Anda tidak mendapatkan sidik jari dari file kunci pribadi tetapi dari file kunci publik.
Bahkan, ssh-keygen sudah memberi tahu Anda ini:
Jalankan melawan separuh kunci publik dan itu harus bekerja.
Lebih umum
Pikirkan tentang hal ini: alasan keberadaan sidik jari adalah Anda dapat mengidentifikasi kunci publik. Bahkan, mendapatkan hash dari kunci privat adalah masalah keamanan potensial selain menjadi tidak berguna untuk server (yang bahkan tidak MEMILIKI kunci privat yang bersangkutan).
Setelah Anda memiliki kunci publik, prosesnya adalah memverifikasi bahwa klien memiliki penangguhan pada setengah privat yang sesuai. Karena Anda sudah tahu kunci mana yang Anda coba verifikasi, Anda tidak perlu sidik jari.
sumber
ssh-keygen
bekerja pada file kunci pribadi RSA yang memiliki info tambahan di awal (lihat posting awal saya), tetapi tidak pada yang ini. .ssh-keygen -yf
lakukan ini.