Pesan yang Anda lihat adalah masalah terpisah. Ia meminta Anda untuk mengonfirmasi bahwa host yang Anda hubungkan benar-benar yang Anda harapkan. Dari server, Anda bisa mendapatkan sidik jari dengan menjalankan ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
. Kemudian, ketika Anda menghubungkan dari jarak jauh untuk pertama kalinya, Anda dapat memastikan bahwa sidik jari cocok.
Kunci host, terlihat beraksi di sini, mengatasi masalah manusia dalam serangan tengah - mungkin DNS telah ditumbangkan, dan Anda terhubung ke mesin pesaing, bukan milik Anda. Mesin itu mengumpulkan kredensial Anda dan secara transparan meneruskan koneksi Anda ke server nyata, mencuri informasi Anda tanpa Anda sadari. Memastikan kunci host yang cocok mencegah hal ini terjadi kecuali jika penyerang benar-benar mencuri kunci publik server Anda.
Masalah tetap ada - bagaimana Anda tahu kunci mana yang benar? Setelah koneksi pertama, kunci publik disimpan dalam ~/.ssh/known_hosts
file Anda , jadi koneksi selanjutnya baik-baik saja. Tetapi pertama kali, Anda perlu beberapa cara out-of-band untuk mendapatkan sidik jari, atau Anda mengikuti model "TOFU": trust-on-first-use.
Tapi semua ini tidak ada hubungannya dengan kata sandi vs. kunci, kecuali bahwa kedua kunci dan kata sandi dapat dicuri melalui serangan ini - dalam arti, itu adalah kerentanan yang Anda minta.
Ada (setidaknya) tiga alasan kata sandi lebih buruk daripada kunci:
- Mereka bisa menjadi kasar. Kata sandi 8 karakter yang dipilih pengguna memiliki sekitar 30 bit menebak-entropi. Pasangan kunci publik / pribadi ssh adalah 1024 bit atau lebih besar. Secara efektif tidak mungkin untuk memaksa kunci ssh, tetapi tebak kata sandi otomatis terjadi setiap saat.
- Mereka bisa bodoh. Pengguna secara rutin memilih kata sandi yang mengerikan, bahkan dengan pembatasan di tempat, dan mereka cenderung menggunakan kata sandi yang lebih sulit di banyak tempat. Ini jelas membuat serangan lebih mudah.
- Kata sandi dapat dicuri dari jarak jauh. Ketika Anda menggunakan SSH, kata sandi dienkripsi pada kabel, tetapi sangat umum untuk server ssh untuk diganti pada sistem yang dikompromikan dengan yang login semua kata sandi. Dengan kunci, kunci pribadi tetap berada pada sistem lokal dan tidak pernah dikirim sama sekali, sehingga tidak dapat dicuri tanpa benar-benar membahayakan mesin klien.
Selain itu, kunci ssh menawarkan kenyamanan ketika digunakan dengan sesuatu seperti ssh-agent
- Anda mendapatkan pengoperasian tanpa gangguan tanpa harus mengautentikasi ulang setiap kali, sambil tetap mempertahankan tingkat keamanan yang wajar.
Tidak ada keuntungan yang signifikan dalam meminta keduanya, karena seseorang yang memiliki akses yang cukup untuk mencuri kunci pribadi dapat dengan mudah mencuri kata sandi pengguna juga. Jika Anda membutuhkan keamanan lebih dari ini, pertimbangkan untuk mencari ke dalam sistem otentikasi dua faktor seperti RSA SecurID atau WiKID .