Pertanyaan Apakah mungkin untuk menghapus kunci host tertentu dari file SS_'s known_hosts?


Apakah mungkin untuk menghapus kunci host tertentu dari file SS_'s known_hosts?

Saya biasanya mengakhiri penghapusan keseluruhan known_hosts file, yang saya tidak punya masalah dengan melakukan, tetapi hanya karena penasaran, apakah mungkin untuk menghapus hanya satu entri?

Saya membuka known_hosts file, tetapi saya berjuang untuk memahami isinya.

Di bawah ini adalah pesan yang saya hadapi, yang membuat saya bertanya pertanyaan ini:

Add correct host key in /home/wissen16/.ssh/known_hosts to get rid of this message.
Offending key in /home/wissen16/.ssh/known_hosts:1
RSA host key for foo.com has changed and you have requested strict checking.
Host key verification failed.

249
2018-01-10 05:56


asal




Jawaban:


Gunakan perintah ini untuk menghapus entri dari known_hosts:

ssh-keygen -R hostname

424
2018-01-10 07:43



Ia bekerja dengan alamat IP juga. Sebagai contoh, saya memiliki cara pintas host DNS untuk server Web saya. Untuk menghapus konflik yang saya miliki antara kunci untuk nama host khusus dan alamat IP, saya harus menghapus entri untuk keduanya. Jadi ssh-keygen -R xxx.xxx.xxx.xxx. - StrangeElement
Seperti @StrangeElement mengatakan, terkadang ada kemungkinan bahwa Anda harus menghapus juga IP host selain dari nama host. - Gonzalo Cao
Plus, itu membuat cadangan secara otomatis (di mesin osx saya: Original contents retained as /Users/nha/.ssh/known_hosts.old, dengan asumsi itu sama untuk Ubuntu). - nha
Plus, jika Anda menggunakan port ssh non-standar, gunakan format ini ssh-keygen -R [ssh.sssshh.com]:1234 - Shiji.Jiang
Jawaban terbaik untuk pertanyaan ini. Bekerja seperti pesona - bademba


Ya, Anda dapat menghapus satu kunci saja. Buka saja di editor dan hapus garis yang menyinggung. Nomor setelah titik dua dalam pesan kesalahan adalah nomor baris, jadi itulah baris untuk menghapus - baris 1 dalam contoh Anda ..


28
2018-01-10 06:00



Saya tidak tahu itu mengidentifikasi nomor baris, yang sangat membantu. - deltree


Saya baru-baru ini mulai menggunakan kunci host, tetapi ketika saya telah mengacaukannya, ini umumnya satu kunci per baris sehingga backup file dan menghapusnya satu per satu sampai Anda menemukan yang tepat. Kemudian tambahkan yang lain kembali. Sedikit cara panjang untuk melakukannya, tetapi harus bekerja.

Juga berdasarkan kesalahan itu, dan tanpa tahu apa yang pernah terjadi, itu bisa menjadi kunci host pertama di file yang bermasalah sehingga membuka file dengan vim

vim ~/.ssh/known_hosts

dan tekan

dd

lalu simpan.


18
2018-01-10 06:01



Anda dapat menggunakan: atur nu in vim untuk menampilkan nomor baris. Jawaban Takkat adalah yang terbaik. - Javier Rivera
Saya setuju tidak tahu Anda bisa melakukan itu. Saya akan menggunakannya di masa depan. Saya tetap ingin mencari pengaturan nomor baris untuk vim. Terima kasih. - percent20


Menggunakan nama host ssh-keygen-R tidak akan selalu bekerja. Jika Anda memiliki versi SSH yang lebih baru yang "menyembunyikan" hostname untuk mencegah pembajakan ssh-agent, rupanya ssh-keygen tidak dapat membatalkan hostname.

Sebagai contoh, saya memiliki host bernama build-node-01 dan saya telah terhubung dengannya dan menerima kunci. Saya kemudian membangunnya kembali dari awal, mendapatkan sidik jari host baru dan saya mencoba untuk menyambung kembali, saya akan mendapatkan peringatan bahwa ada konflik di jalur X (katakanlah 3). saya berlari ssh-keygen -R hostname, tetapi pada saat saya mencoba untuk terhubung, saya masih mendapat peringatan bahwa ada konflik. Saya memeriksa file hanya untuk menemukan bahwa nama host di-hash dan muncul sebagai [1] Bu4Ch@R@4D0M57uFF bukannya nama host yang bisa dibaca.

Dalam hal ini satu-satunya cara untuk berhasil menyingkirkan host yang menyinggung adalah menggunakan

sed -i 'xd' ~/.ssh/known_hosts

Untuk mengambil langkah ini lebih jauh, Anda mungkin ingin membuat cadangan dari known_hosts jika Anda menghapus baris yang salah, dalam hal ini hanya menambahkan .bak (atau ekstensi apa pun) ke opsi -i untuk membuat cadangan dengan itu perpanjangan. Menggunakan ssh-keygen melakukan ini secara otomatis.

sed -i.bak 'xd' ~/.ssh/known_hosts

3
2018-03-24 22:24



Ini tidak benar. ssh-keygen -R {hostname} akan berfungsi, bahkan ketika nama host 'disembunyikan' (dicirikan). Namun, ya, orang dapat menghapus entri dengan nomor (mis., Entri ke-10 melalui sed -i.bak 10d ~/.ssh/known_hosts), tapi itu biasanya tidak diperlukan. Bisa jadi port non-standar digunakan, dalam hal ini, Anda mungkin harus memformat perintah sebagai (tanda kutip): ssh-keygen -R '[hostname]:2222' - michael
Baik untuk mengetahui @michael_n, kemungkinan besar itu adalah port non-standar yang memengaruhi kemampuan saya untuk menghapus entri. Saya juga harus mencatat bahwa jika Anda telah menerima beberapa sidik jari untuk host, saya tidak yakin apakah itu menghapus SEMUA entri sekaligus, atau hanya satu pada satu waktu. - dragon788


Hanya untuk berbagi jawaban bersih dan mudah yang baru saja saya temukan. Menghapus nama host keluar untuk saya, karena file known_hosts di-hash. Namun, saya BISA secara manual mengedit entri host berdasarkan nomor baris dalam pesan kesalahan. Seperti dicatat oleh Mike Scott sebelumnya, nomor baris nama host yang menyinggung ada di pesan kesalahan.

Atau, saya bisa melakukan ini. Dari sini: cara memperbaiki kunci yang menyinggung dalam file ssh known_hosts

Saya mendapat sedikit sihir cli ini

sed -i 'xd' ~/.ssh/known_hosts

Ganti x dengan nomor baris, dan voila. Dia juga menawarkan jawaban perl jika sed tidak akan berfungsi.


1
2018-02-20 00:37





sed '/10\.20\.120\.211/d' ~/.ssh/known_hosts > temp && mv temp ~/.ssh/known_hosts

Dalam hal ini, 10.20.120.211 adalah host yang ingin saya hapus dari file known_hosts saya, pastikan Anda keluar dari karakter khusus seperti (.)


0
2018-02-20 01:32



Alamat IP & nama host tidak lagi disimpan secara verbatim (teks jelas) di file host yang dikenal, jadi ini tidak akan berfungsi. Yang harus digunakan ssh-keygen -R ... (lebih disukai); atau, sed dengan nomor baris tertentu untuk dihapus. Juga untuk sed di tempat, gunakan -i' option; e.g., sed -i.bak 10d ~ / .ssh / known_hosts` untuk menghapus baris ke-10, dan (opsional) simpan yang asli dalam file cadangan yang disempurnakan oleh .bak. - michael