pengembangan-web-mp.com

Bagaimana cara menghapus kunci RSA ketat yang memeriksa SSH dan apa masalahnya di sini?

Saya memiliki server Linux yang setiap kali saya hubungkan menunjukkan kepada saya pesan yang mengubah kunci Host SSH:

$ ssh root @ Host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @ PERINGATAN: IDENTIFIKASI Host REMOTE TELAH BERUBAH! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ IT IS MUNGKIN SESEORANG ITU IS MELAKUKAN SESUATU NASTY! Seseorang bisa menguping kamu sekarang (serangan man-in-the-middle)! Mungkin juga kunci Host RSA baru saja diubah. Sidik jari untuk kunci RSA yang dikirim oleh Host jarak jauh adalah 93: a2: 1b: 1c: 5f: 3e: 68: 47: bf: 79: 56: 52: f0: ec: 03: 6b. Silakan hubungi administrator sistem Anda. Tambahkan kunci Host yang benar di /home/emerson/.ssh/known_hosts untuk menyingkirkan pesan ini. Masukkan kunci di /home/emerson/.ssh/known_hosts:377

Kunci Host RSA untuk Host1 telah berubah dan Anda telah meminta pemeriksaan ketat. Verifikasi kunci host gagal.

Itu membuat saya selama beberapa detik masuk dan kemudian menutup koneksi.

Host1: ~/.ssh # Baca dari host Host1 jauh: Koneksi diatur ulang oleh rekan Koneksi ke Host1 ditutup.

Adakah yang tahu apa yang terjadi dan apa yang bisa saya lakukan untuk mengatasi masalah ini?

45
setatakahashi

Tolong jangan hapus seluruh file known_hosts seperti yang direkomendasikan oleh beberapa orang, ini benar-benar mengosongkan titik peringatan. Ini adalah fitur keamanan untuk memperingatkan Anda bahwa seorang pria dalam serangan tengah mungkin telah terjadi.

Saya sarankan Anda mengidentifikasi mengapa ia berpikir sesuatu telah berubah, kemungkinan besar peningkatan SSH mengubah kunci enkripsi karena kemungkinan celah keamanan. Anda kemudian dapat membersihkan baris tertentu dari file known_hosts Anda:

sed -i 377d ~/.ssh/known_hosts

Ini d menghapus baris 377 seperti yang ditunjukkan setelah titik dua dalam peringatan:

/home/emerson/.ssh/known_hosts:377

Atau Anda dapat menghapus kunci yang relevan dengan melakukan hal berikut

ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)

Mohon JANGAN bersihkan seluruh file dan pastikan ini adalah mesin yang ingin Anda sambungkan sebelum membersihkan kunci tertentu.

71
Adam Gibbins

Saya pikir meskipun beberapa jawaban di sini membahas tindakan yang direkomendasikan dalam pertanyaan OP, itu tidak sepenuhnya menjawab pertanyaan.

Pertanyaannya menyatakan "Bagaimana cara menghapus kunci RSA yang ketat memeriksa SSH dan apa masalahnya di sini?"

Masalahnya di sini adalah, seperti yang disarankan oleh beberapa orang lain, perubahan pada Host mungkin karena menginstal ulang server (skenario paling umum). Dan solusi yang disarankan memang untuk menghapus kunci yang menyinggung dari file .ssh/Authorized_key dengan sed inline.

Namun saya tidak melihat jawaban apa pun menjawab bagian spesifik dari pertanyaan "Bagaimana menghapus kunci RSA yang ketat memeriksa SSH".

Anda dapat menghapus pemeriksaan StrictHostKey di file konfigurasi ssh Anda, biasanya disimpan di ~/.ssh/config.

Contoh Host blok disediakan di bawah ini:

Host 101
  HostName yourip|hostname
  User youruserid
  IdentityFile /path/to/keyfile
  Port 22
  StrictHostKeyChecking no

Baris yang ditambahkan secara khusus adalah yang terakhir StrictHostKeyChecking no yang melakukan apa itu. Bergantung pada skenario spesifik Anda, ini mungkin berguna bagi Anda, seperti menjalankan beberapa wadah tervirtualisasi pada server khusus, hanya dalam beberapa ips, berhenti dan memulai contoh lain pada ip yang sama.

27
Joel G Mathew

Cara lain untuk menghapus StrictHostKeyChecking, ketika Anda hanya perlu melakukannya untuk satu server:

ssh <server> -o StrictHostKeyChecking=no
11
Greg Dougherty

Pertama-tama, apakah ini mesin Anda? Apakah Anda dengan sadar mengubah kunci Host? Jika tidak, saya akan sangat khawatir bahwa ada sesuatu yang mengubah data itu.

Kedua, nyalakan debug ssh,

ssh -vvv [email protected]

dan lihat apa yang memberitahu Anda, juga coba cari,/var/log/secure dan/var/log/messages di server yang Anda coba sambungkan sebagai petunjuk, sshd memberikan pesan kesalahan yang baik.

Ketiga, apakah mesin ini terhubung ke internet? Haruskah Anda benar-benar mengizinkan login root?

5
Dave Cheney

Seperti 'Host' [yang didefinisikan secara luas, itu bisa berupa segalanya mulai dari instal ulang/multiboot ke komputer yang sama sekali berbeda dengan alamat IP yang telah Anda hubungkan sebelumnya, misalnya] muncul ke klien ssh yang telah berubah, itu memberi Anda kesalahan.

Tidak perlu mematikan pemeriksaan ketat, tidak juga penghapusan grosir kunci yang disimpan masuk akal.

Sangat mungkin untuk memiliki dua kunci berbeda yang terdaftar di known_hosts untuk nama host atau alamat IP tertentu; memberi Anda 2 alternatif sesuai dengan apakah Anda berpikir Anda memerlukan kunci 'lama' yang saat ini disimpan di known_hosts

Hapus kunci tertentu yang dimaksud, di l377 dari known_hosts untuk OP, atau simpan keduanya

Cara paling sederhana untuk menjaga keduanya, menghindari penghapusan kunci di known_hosts, adalah

  1. Edit diketahui_hosts untuk menambahkan # pada awal entri 'lama' yang dirujuk di known_hosts [@ l377] untuk sementara
  2. Hubungkan [ssh ke Host], setujui Prompt untuk menambahkan kunci baru 'secara otomatis'
  3. Kemudian edit kembali host yang dikenal untuk menghapus #

lebih banyak jawaban di "Tambahkan kunci Host yang benar di known_hosts"/beberapa ssh kunci Host per nama host?

3
Mark

Anda mendapatkan ini karena sesuatu telah berubah (seperti NIC baru, IP baru, perubahan pada perangkat lunak server, dll). Fokus keamanan memiliki artikel yang bagus di SSH Host key protection .

Hapus saja kunci (menggunakan SFTP atau yang serupa) dari server, dengan mengedit $HOME/.ssh/known_hosts file, dan terima yang baru pada koneksi berikutnya.

Koneksi Anda mungkin terputus karena pengaturan StrictHostKeyChecking. Lihat tas ini untuk masalah serupa.

3
user1797