Ketika secara eksplisit menentukan file identitas ke ssh:
ssh -i ./id_rsa ...
Saya memiliki baris ini di jejak debug ssh:
debug1: Offering public key: ./id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Apakah itu berarti ssh-dihasilkan id_rsa
mengandung RSA publik eksponen juga? id_rsa
format tampaknya agak eksplisit bahwa itu berisi kunci pribadi dengan blok "MULAI PRIVATE KEY", jadi "menawarkan kunci publik" harus berarti sesuatu selain "mengirimkan kunci publik ke server".
EDIT:
Untuk memperjelas, saya ingin tahu apa yang sebenarnya terjadi di balik garis "menawarkan kunci publik". Jika klien memegang beberapa kunci, semuanya akan ditawarkan ke server satu per satu.
Jawaban:
untuk terhubung ke server SSH dan mengautentikasi dengan kunci publik / pribadi Anda, Anda harus terlebih dahulu membagikan kunci publik Anda dengan server.
ini dilakukan dengan menyalin kunci publik untuk kunci pribadi Anda ke server, dan menambahkannya
~/ssh/authorized_keys
dengan menyalin / menempel, menyalinid_rsa.pub
ke~/.ssh/authorized_keys
server atau dengancat id_rsa.pub >> ~/.ssh/authorized_keys
, menambahkannya ke daftar.ketika Anda terhubung, server menggunakan kunci publik Anda untuk menandatangani tantangan, dan klien Anda menggunakan kunci pribadi Anda
id_rsa
untuk mendekripsi tantangan, mengenkripsi ulang dengan publik serverhost key
dan mengirimkannya kembali.host memverifikasi bahwa Anda mendekripsi tantangan dengan benar, dengan mendekripsi respons Anda dengan kunci privatnya, dan klien / host membuat koneksi terenkripsi, berdasarkan data yang dibagikan, bukan pada kunci publik / pribadi Anda.
di NO POINT dalam pertukaran adalah kunci pribadi Anda, atau kunci pribadi tuan rumah dipertukarkan atau diungkapkan satu sama lain. kunci publik Anda tersimpan di server, tapi itu sebabnya kunci PUBLIC.
sumber
ssh -i keyname
bahwa Anda memberi tahu klien ssh Anda persis dengan kunci WHICH yang akan Anda gunakan untuk terhubung ke server. jika Anda memiliki selusin kunci di~/.ssh/
klien Anda TIDAK akan beralih melalui setiap kunci. itu akan mencari~/.ssh/id_rsa
,~/.ssh/id_dsa
berpotensi beberapa nama file lain yang dikodekan ke klien, atau kunci apa yang ditentukan untuk host itu di~/.ssh/config
... panjang cerita pendek; klien Anda bukan / menawarkan / kunci apa pun ke server.~/.ssh/authorized_keys
host tahu apa tantangannya, dan apa yang dicari untuk, jadi setelah kunci publik membuka kunci, ia tahu untuk menggunakan kunci itu.Kriptografi Kunci Publik / Pribadi didasarkan pada sistem yang sangat sederhana:
Anda memiliki kunci publik yang mampu melakukan enkripsi satu arah, dan sebuah kunci pribadi yang mampu de cryption. Kunci publik kemudian dapat diberikan kepada semua orang di dunia, dan tidak seorang pun akan dapat mendekripsi data terenkripsi Anda, meskipun mereka AKAN dapat mengenkripsi data yang Anda dapat mendekripsi dengan kunci pribadi Anda.
Jadi jawaban untuk pertanyaan Anda adalah, "Kunci publik Anda."
sumber
Saya tidak berpikir itu seharusnya mengirim kunci publik atau pribadi saat ini. Enkripsi harus dilakukan oleh klien menggunakan kunci pribadi pada plaintext yang sudah dikenal ke server. Tuan rumah dapat mendekripsi pesan ini menggunakan kunci publik, mengetahui bahwa satu-satunya yang bisa mengenkripsi itu dengan benar adalah klien yang memegang kunci pribadi terkait, sehingga mengotentikasi klien.
Saya percaya itu mengatakan
Offering public key: ./id_rsa
karena menggunakan kunci pribadi (disimpan dalam./id_rsa
) untuk melakukan enkripsi pada plaintext yang dikenal oleh server dan kemudian server akan menggunakan kunci publik untuk mendekripsi ciphertext ini dan mengkonfirmasi bahwa itu cocok dengan plaintext. File kunci publik./id_rsa.pub
tidak boleh dibutuhkan oleh klien setelah pembuatan kunci awal. Ini hanya digunakan oleh server untuk dekripsi.sumber