Solusi 1:
Saya lebih suka ssh-keygen -y -e -f <private key>
cara alih-alih jawaban yang diterima dari Bagaimana Anda menguji pasangan kunci DSA publik/pribadi? di Stack Overflow.
ssh-keygen -y -e -f <private key>
mengambil kunci pribadi dan mencetak kunci publik yang sesuai yang dapat langsung dibandingkan dengan kunci publik yang tersedia. (Petunjuk:waspadalah terhadap komentar atau opsi kunci.)
(Bagaimana caranya? Saya hanya bisa berharap kunci publik dikodekan secara langsung atau tidak langsung dalam kunci privat...)
Saya membutuhkan ini sendiri dan menggunakan Bash one-liner berikut. Seharusnya tidak menghasilkan apa-apa jika kunci-kunci itu milik bersama. Terapkan sedikit -q
ke diff dalam skrip dan diff hanya menyetel kode pengembalian dengan tepat.
PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )
Solusi 2:
Tergantung di mana Anda mendapatkan file kunci publik yang Anda uji, jawaban yang diterima dapat memberikan hasil positif palsu. Ini karena perilaku yang dijelaskan dalam komentar oleh @drewbenn. Secara khusus, ketika opsi -e digunakan dengan file kunci pribadi sebagai parameter opsi -f, itu hanya meniru (tetapi memformat ulang) apa yang ada di file kunci publik terkait.
Dengan kata lain,
ssh-keygen -y -f id_rsa
(tampaknya) menghasilkan nilai kunci publik, dan
ssh-keygen -y -e -f id_rsa
sederhana dan menampilkan (dan memformat ulang) kunci di yang sudah ada id_rsa.pub apapun itu .
Dalam kasus saya, saya harus memverifikasi bahwa pasangan tersebut tidak rusak. Jadi, saya memutuskan untuk membandingkan yang berikut ini:
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
dengan
cut -d' ' -f 2 id_rsa.pub
Oleh karena itu:
diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)
Mungkin ini tidak sefleksibel, tapi lebih baik untuk kebutuhan saya. Mungkin itu membantu orang lain.
Solusi 3:
Jika ada di sistem lokal Anda, tempelkan id_rsa.pub
di $HOME/.ssh/authorized_keys
Anda dan ssh
ke localhost
menggunakan id_rsa
kunci. Jika berhasil, maka mereka cocok.
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost