Bagaimana saya melewatkan pertanyaan “known_host” pertama kali saya terhubung ke mesin melalui SSH dengan kunci publik / pribadi? [duplikat]

Jawaban:

31

Semua jawaban saat ini lainnya tidak memiliki UserKnownHostsFile = / dev / null

Jika Anda hanya ingin melakukannya sekali Anda dapat menggunakan:

ssh -o StrictHostKeychecking=no hostname

Jika Anda ingin melakukannya berulang kali, Anda harus menambahkan sesuatu seperti berikut ke ~ / .ssh / config Anda

Host 192.168.0.*
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null

Untuk mengkonfigurasi ini pada OpenSSH untuk Windows cukup ganti /dev/nulldengan NUL.

Penjelasan yang bagus dari: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

Jason Axelson
sumber
2
Saya telah berburu jauh untuk menyaring subnet selama berbulan-bulan (tidak aktif), ini persis apa yang saya inginkan. Kami memiliki jaringan pengembangan kecil dengan dhcp dan perangkat kami selalu mendapatkan alamat IP baru, ini membuat koneksi ke mereka JAUH lebih mudah. Terima kasih!
Adam Lewis
13

Matikan StrictHostKeyCheckingvia ssh_configatau opsi baris perintah.

kekacauan
sumber
/ etc / ssh / ssh_config atau ~ / .ssh / config --- atau apa pun yang setara ada di windows jika itu platform klien Anda
Doug Harris
3

Anda bisa mendapatkan kunci publik, menambahkannya ke file known_hosts dan kemudian mengulanginya:

ssh-keyscan -t rsa hostname >> .ssh/known_hosts
ssh-keygen -H
rm .ssh/known_hosts.old
egridasov
sumber
2
$ ssh -o StrictHostKeychecking=no hostname

Ini akan menyebabkan pemeriksaan dilewati dan kunci host jarak jauh ditambahkan secara otomatis pada login pertama. (Ada juga opsi CheckHostIP, tetapi tampaknya tidak benar-benar menonaktifkan pemeriksaan untuk apakah ada kunci sama sekali).

Nelson
sumber
2
Saya juga suka menggunakan UserKnownHostsFile sehingga tanda tangan tidak diingat pada sistem saya. Trik yang bagus:ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeychecking=no hostname
metavida
2

Butuh beberapa saat untuk menemukannya. Usecase paling umum yang pernah saya lihat adalah ketika Anda punya terowongan ssh ke jaringan jarak jauh. Semua solusi di sini menghasilkan peringatan yang merusak skrip saya (nagios).

Opsi yang saya butuhkan adalah:

NoHostAuthenticationForLocalhost yes

Yang, seperti namanya juga hanya berlaku untuk localhost.

richo
sumber
0

Anda dapat menonaktifkan pemeriksaan, tetapi tentu saja itu kurang aman. Dalam situasi ideal apa yang harus Anda lakukan adalah mendapatkan seseorang yang sudah memiliki akses ke mesin untuk mengambil kunci host publik dan memberitahu ssh untuk menggunakannya. yaitu: ambil output dari:

cat /etc/ssh/ssh_host_rsa_key.pub

tambahkan dulu nama host mesin, dan tambahkan baris itu ke file ~ / .ssh / known_hosts di mesin Anda. Anda akan berakhir dengan sesuatu yang terlihat seperti:

myhost.example.com ssh-rsa AAAAB3Netc ...

Sebagai alternatif, jika Anda hanya ingin mengambil sidik jari kunci, yang mungkin lebih mudah untuk ditransfer melalui saluran bandwidth terbatas (seperti panggilan telepon), Anda dapat menjalankan pembantu Anda:

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

sumber
0

Jika Anda hanya ingin menonaktifkan sementara pemeriksaan host, sehingga Anda dapat masuk ke sistem LiveCD, misalnya, mengubah nama ~/.ssh/known_hostsmenjadi sesuatu yang lain, dan kemudian mengubahnya kembali setelah Anda selesai.

endolit
sumber
-2
  1. Tambahkan "StrictHostKeyChecking no" ke / etc / ssh / ssh_config
  2. cd ~ / .ssh
  3. rm known_hosts
  4. ln -s / dev / null known_hosts

Bingo

Cliff Kennedy
sumber
1
Anda tahu serangan seperti apa yang seharusnya dihindari oleh pertanyaan ini, bukan?
vonbrand