Di mana Sidik Jari Server SSH dihasilkan / disimpan?

44

Saya menginstal openssh-server dan membuat kunci dengan ssh-keygen. Saya kemudian mencoba mengujinya menggunakan penerusan port lokal dengan melakukan ssh -L 8080:www.nytimes.com:80 127.0.0.1. Namun, sidik jari kunci yang diberikan perintah ini bukan sidik jari kunci yang saya dapatkan ketika saya melakukannya ssh-keygen -l. Bahkan jika saya menghapus direktori .ssh saya, saya masih mendapatkan sidik jari yang sama, yang bukan yang saya buat dengan ssh-keygen. Apakah ada kunci lain di sistem saya? Di mana kunci ini? Bagaimana saya bisa memilih kunci ini untuk digunakan oleh openssh-server?

bsamek
sumber

Jawaban:

59

Saat Anda membuat sesi SSH, dua pasangan kunci berbeda (dengan sidik jari untuk masing-masing pasangan) terlibat. Salah satunya adalah kunci pengguna yang disimpan di ~/.ssh. Identitas kunci SSH pengguna terkadang digunakan sebagai kredensial untuk masuk ke komputer lain (jika Anda telah menyiapkan login berbasis kunci).

Yang lainnya adalah kunci server SSH. Ini adalah kunci yang Anda lihat sidik jari ketika Anda terhubung ke server yang berbeda untuk pertama kalinya. Identitas kunci ini digunakan untuk memastikan Anda masuk ke server SSH yang Anda inginkan. Ini penting jika Anda menggunakan kata sandi karena Anda tidak ingin secara tidak sengaja mencoba masuk ke mesin penyerang: penyerang akan mendapatkan kata sandi saat Anda mengetikkannya. Kemudian penyerang dapat masuk ke mesin yang Anda pikir Anda masuk untuk! (ini dikenal sebagai "man in the middle attack" ) Kunci-kunci yang digunakan oleh server SSH untuk mengidentifikasi dirinya ketika Anda masuk ke sana terletak /etc/ssh/dan biasanya dinamai sesuatu seperti ssh_host_rsa_key.

Anda benar-benar dapat mengubah di mana server SSH mencari kunci dalam file dengan pengaturan./etc/ssh/sshd_configHostKey /path/to/host/key

Secara default, ssh-keygenakan membuat kunci untuk pengguna saat ini, yang, secara default, akan disimpan ~/.ssh. Format kunci pengguna dan kunci server adalah sama; perbedaannya adalah di mana mereka ditempatkan dan apakah /etc/ssh/sshd_configmemiliki HostKeyarahan yang menunjuk kepada mereka. Ketika Anda menginstal paket openssh-server, itu secara otomatis menghasilkan kunci untuk server untuk digunakan. Dari sanalah kunci dengan sidik jari yang tidak dikenal berasal. Jika Anda ingin melihat sidik jari kunci SSH server (RSA *), Anda bisa menjalankannya ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub.

* Ada beberapa algoritma enkripsi. Masing-masing menggunakan kunci yang berbeda. Yang umum adalah DSA (lemah), RSA (default lama), dan ECDSA (default baru).

Azendale
sumber
1
Hasil Google untuk "set ssh sidik jari", meskipun istilah-istilah itu secara teknis salah, secara mengejutkan buruk. Bagus bahwa saya menemukan ini di antara mereka.
Bart van Heukelom
4
Terima kasih untuk ini. Satu catatan: 'sudo' tidak diperlukan, jika Anda menunjuk ssh-keygen di kunci publik. Yaitu: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub. Juga, untuk instalasi saya, itu adalah kunci ECDSA, dan bukan kunci RSA, yang digunakan daemon ssh, jadi sebenarnya yang harus saya jalankan adalah ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub.
John Clements
Apakah ada masalah dengan mendapatkan kunci publik dari hard drive lama saya dan menggunakannya dalam instalasi baru saya, menimpa mereka di / etc / ssh? Kunci adalah kunci, bukan?
Adam
@ Adam Saya tidak melihat masalah dengan melakukan itu. Itu akan membantu menghindari masalah ketika Anda masuk untuk login dari jarak jauh dan kunci telah berubah (yang terjadi jika Anda menginstal ulang kunci baru yang dihasilkan.)
Azendale
3
Ketika saya terhubung sshke host dari 14,04 pertama kali, itu menunjukkan sidik jari MD5. Untuk membuat ssh-keygendari 16,04 menunjukkan sidik jari MD5, Anda harus menggunakan -E md5opsi.
jarno
15

Kunci host SSH disimpan /etc/ssh/, yang biasanya tidak perlu Anda pilih. Kunci-kunci ini dihasilkan ketika paket openssh-server diinstal.

Anda dapat mencantumkan sidik jari tombol-tombol tersebut ssh-keygen -l -f /etc/ssh/ssh_host_key.pubmeskipun Anda harus mengulanginya untuk setiap kunci publik.

 

ajmitch
sumber
7

ssh-keygentidak menghasilkan sidik jari SSH di server Anda. Itu dihasilkan oleh server SSH. ssh-keygenmembuat pasangan kunci publik / pribadi untuk sistem Anda yang nantinya dapat Anda gunakan untuk mengakses server SSH Anda tanpa harus mengirimkan kode sandi teks biasa ke server.

Sidik jari server Anda jelas tidak akan ditampilkan sebagai sidik jari dari pasangan kunci publik / pribadi yang Anda buat, karena keduanya terpisah satu sama lain.

Thomas Ward
sumber
3
Perhatikan bahwa Anda harus dapat menghasilkan kunci ssh untuk server Anda (bertentangan dengan apa yang Anda katakan) tetapi Anda hanya harus meletakkannya di tempat yang tepat sehingga mereka digunakan untuk tujuan itu.
Azendale