Saya memiliki beberapa kotak cloud yang sering mengubah IP mereka.
Saya ssh menggunakan nama host tetapi harus mengedit file known_hosts setiap kali server diluncurkan karena pesan kesalahan ini:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is…
Selain dari risiko keamanan dan yang terkait dengan apa yang ingin saya lakukan, apakah ada cara untuk mengabaikan kesalahan ini atau menimpa file yang dikenal secara otomatis sehingga saya tidak selalu harus mengeditnya sendiri?
ssh
bash
known-hosts
fingerprint
Coneybeare
sumber
sumber
Selain itu: Anda bisa hanya coba nonaktifkan cek CheckHostIP untuk itu nama:
sumber
Banyak jawaban di sini akan berhasil - tetapi secara teknis mereka sedang mencari solusi. OpenSSH sudah memiliki built-in fitur dengan pikiran ini:
HostKeyAlias
.Di file .ssh / config Anda, tambahkan
HostKeyAlias <alias>
ke konfigurasi host:Dengan ini, menghubungkan ke server
myserver.example.com
tidak akan menggunakan nama host atau alamat IP untuk referensi lokal - itu akan selalu hanya menggunakan HostKeyAlias yang diberikan ketika menghubungkan ke server itu. Bagi saya masuk akal untuk menggunakan nama host - tetapi Anda tentu saja dapat menggunakan alias apa pun yang Anda suka.Konfigurasi umum untuk saya sendiri untuk host dinamis adalah seperti ini:
Ini juga dapat digunakan dalam beberapa skenario yang tidak jelas di mana Anda tahu banyak server Anda memiliki kunci host yang sama (umumnya ini seharusnya tidak terjadi). Ini kemudian akan mencegah entri duplikat. Di masa depan, jika kunci berubah secara sah, Anda tidak perlu mengganti / menghapus banyak entri. Hanya satu. Server Gitlab Geo adalah contoh yang bagus untuk ini.
Mengenai membersihkan file diketahui_hosts, saya akan menyarankan melihat pertanyaan / jawaban lain yang secara khusus terkait dengan mempertahankan / menghapus entri known_hosts basi. Misalnya, lihat Cara mengelola file .ssh / known_hosts saya ; Saya sangat terkesan dengan jawaban user1953828, meskipun saya melihatnya tidak memiliki banyak upvote (belum). :)
sumber
Saya menggunakan opsi cerdik ini untuk mengatasi masalah ini. (Kunci publik host saya diregenerasi cukup sering. Jadi ini menghilangkan IP dan cek Kunci)
Anda juga bisa menggunakan ini jika Kunci tetap sama tetapi IP berubah:
sumber
Anda dapat mengatur StrictHostKeyChecking = tidak di konfigurasi klien ssh Anda (yaitu file ~ / ssh / config pada mesin yang Anda hubungkan), untuk mengabaikan peringatan.
sumber
Anda bisa memasukkan
CheckHostIP no
ke dalam~/.ssh/config
file Anda , tetapi itu membuat Anda terbuka untuk serangan spoofing. Jika Anda tidak khawatir tentang itu, maka pengaturan ini harus mematikanknown_hosts
cek.sumber
Saya menghindari menambahkan sidik jari ke
known_hosts
file saya ketika menghubungkan ke mesin AWS sementara. Saya menggunakan perintah sepertiuntuk terhubung ke mereka. Ia tidak akan menanyakan apakah Anda ingin menambahkan mesin "ke daftar host yang dikenal." Ganti
10.0.0.5
dengan alamat IP mesin Anda dansecret.pem
dengan path lengkap dari kunci Ssh Anda. Anda masih akan mendapatkan peringatan bahwa10.0.0.5
telah ditambahkan, tetapi sudah benar-benar hilang/dev/null
. Saya melakukan ini cukup sering sehingga saya menetapkan alias di blog saya~/.profile
Saya memesan
ssh [email protected]
jenis perintah untuk mesin jika saya kesulitan memeriksa sidik jari.sumber
Jadikan known_hosts hanya-baca.
sumber