it-swarm.asia

Hapus kunci dari known_hosts

Saya membangun beberapa mesin virtual selama beberapa minggu terakhir. Masalahnya adalah, .ssh/known_hosts memberi saya Manusia di tengah peringatan. Ini terjadi karena sidik jari lain dikaitkan dengan IP mesin virtual.

Namun, dalam file .ssh/known_hosts, saya tidak menemukan catatan yang terkait dengan IP, hanya dua yang aneh, string seperti kunci dan "ssh-rsa".

Adakah yang punya ide tentang cara menghapus kunci lama dari known_hosts?

128
Adam Matan
sed -i '6d' ~/.ssh/known_hosts

Akan memodifikasi file ~/.ssh/known_hosts: 6, menghapus baris ke-6.

Menurut pendapat saya, menggunakan ssh-keygen -R adalah solusi yang lebih baik untuk pengguna daya openssh, sementara admin Linux reguler Anda akan melakukan yang lebih baik untuk menjaga agar keterampilannya tetap segar dengan menggunakan metode di atas.

84
mikewaters

Solusi paling sederhana adalah:

rm -f .ssh/known_hosts

ssh akan membuat ulang file lagi, tetapi Anda kehilangan kunci untuk memeriksa host lain!

Atau, Anda dapat menggunakan:

ssh-keygen -R "hostname"

Atau pesan ssh "man-in-the-middle" harus menunjukkan baris mana dari file known_hosts yang memiliki sidik jari yang menyinggung. Edit file, lompat ke baris itu dan hapus.

111
Sean Staats

Ada saklar ssh-keygen (-R) untuk ini.

man ssh-keygen berbunyi:

-R hostname Menghapus semua kunci milik hostname dari file known_hosts. Opsi ini berguna untuk menghapus host hash (lihat opsi -H di atas).

72
user201564

Peringatan akan memberi tahu Anda baris persis di file host yang dikenal.

Ini sebuah contoh:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA Host key for foo-bar.net has changed,
and the key for the corresponding IP address 127.0.0.1
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the Host
and its Host key have changed at the same time.
Offending key for IP in /home/user/.ssh/known_hosts:6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE Host IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Lihat bagian /home/user/.ssh/known_hosts:6? Ini menentukan file dan nomor baris.

18
innaM

Anda juga dapat menginstruksikan ssh untuk tidak memeriksa file known_hosts menggunakan flag UserKnownHostsFile dan StrictHostKeyChecking.

Contohnya:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]

Untuk kemudahan penggunaan Anda dapat alias ini:

alias boldssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

Sekarang Anda bisa boldsh kapan saja Anda yakin mempercayai sertifikat server.

8
rouble

Anda perlu menjalankan perintah berikut untuk menyingkirkan masalah ini. Buka terminal dan ketik perintah berikut:

Untuk semua contoh di bawah ini, ganti saja nilai setelah -R

ssh-keygen -R server-name
ssh-keygen -R server.ip.addre.ss
ssh-keygen -R 202.54.1.5
ssh-keygen -R server1.example.com
8
Tarun Gupta

Anda juga dapat menghapus satu baris dari host yang dikenal dengan mis. rmknownhost 111 (111 adalah baris yang harus dihapus):

#! /usr/bin/env Ruby
line = ARGV[0] || raise("gimme line to remove")
hosts = File.expand_path("~/.ssh/known_hosts")
content = File.readlines(hosts)
removed = content.delete_at line.to_i - 1
puts "Removed:\n#{removed}"
File.open(hosts, 'w'){|f| f.write content * ""}

Simpan ini sebagai rmknownhost dalam folder dari PATH Anda.

2
grosser

Semua jawaban baik, tetapi untuk SSH pro nyata kami kehilangan informasi cara menghapus ssh signature dengan nomor port.

Misalnya. Anda terhubung

ssh some.Host.name -p 222

dan Anda mendapatkan peringatan, dan untuk menghapus ini, Anda harus menggunakan nomor porta tanda kurung siku:

ssh-keygen -R [some.Host.name]:222

Semoga ini bisa membantu bagi pengguna konfigurasi non-standar.

1
Arunas Bartisius

Entri untuk nama Host atau ip harus di kolom pertama. Peringatan juga harus mencantumkan nomor baris di mana kunci yang menyinggung berada.

0
stimms

Ini adalah file teks. Anda dapat dengan mudah mengedit dengan vi (m) dan cukup menghapus baris yang dimaksud (dd), dan menyimpan file (wq). Tetapi jika ada perintah khusus untuk menghapus Host, itu mungkin metode yang paling aman.

0
Ryan Griggs