Bagaimana saya bisa menghindari verifikasi host SSH untuk host yang dikenal?

170

Saya mendapatkan prompt berikut setiap kali saya mencoba menghubungkan server menggunakan SSH. Saya mengetik "ya", tetapi apakah ada cara untuk menghapus ini?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 
shantanuo
sumber
8
/ dev / null ada untuk mereka yang berpikir mereka kebal terhadap manusia dalam serangan tengah :)
Tim Post
1
Bagian terburuk: Ketik yuntuk menghemat waktu, dan ia mengeluh: Please type 'yes' or 'no': (hmph)
ADTC
mirip dengan askubuntu.com/questions/87449/…
MarkHu

Jawaban:

235

Gunakan -oopsi,

ssh -o "StrictHostKeyChecking no" user@host
thegeek
sumber
1
Anda mungkin ingin menggunakan file identitas alternatif dengan bendera '-i'
MUY Belgium
Apa gunanya menggunakan file identitas alternatif? Maksud saya, jika Anda terhubung ke host yang dikompromikan, apa bedanya bagaimana Anda mengotentikasi - tidak seperti host yang dikompromikan dapat mencuri kunci Anda juga.
Dagelf
102

Tambahkan baris berikut ke awal /etc/ssh/ssh_config...

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

Pilihan:

  • Subnet Host dapat *memungkinkan akses tidak terbatas ke semua IP.
  • Edit /etc/ssh/ssh_configuntuk konfigurasi global atau ~/.ssh/configuntuk konfigurasi khusus pengguna.

Lihat http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

JimFred
sumber
2
Sayang sekali saya hanya dapat memilih Anda sekali. Mengatur FamousHosts ke / dev / null adalah jenius.
J0hnG4lt
1
Anda yang paling cerdas.
Darth Egregious
30
Ha! Beritahu istriku.
JimFred
30

Anda seharusnya hanya mendapatkan ini saat pertama kali terhubung ke host baru. Setelah Anda merespons yes, host disimpan ~/.ssh/known_hostsdan Anda tidak akan diminta saat berikutnya Anda terhubung.

Perhatikan bahwa jika ~/.ssh/known_hoststidak dapat ditulis karena alasan apa pun (mis. Masalah izin) maka Anda akan diminta setiap kali terhubung.

Paul R
sumber
7
Pertanyaannya adalah adakah di sana untuk menghindari prompt?
shantanuo
Saya mencoba menambahkan "CheckHostIP no" ke file / etc / ssh / ssh_config. Tapi sepertinya itu tidak berhasil
shantanuo
2
sudo chown -R pengguna: pengguna .ssh; sudo chmod 700 .ssh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ hostname dan sambungkan kembali yang seharusnya menghilangkan SEMUA masalah dan HANYA pernah meminta kembali jika ssk_Hostkey diurapi dengan | berubah atau Anda menjadi korban MITM.
linuxdev2013
1
ia mengatakan "setiap kali" jadi jawaban ini sangat tepat
tarikakyol
12

Cara terbaik (karena itu tidak mengorbankan keamanan) adalah menghubungkan sekali ke semua komputer dari satu klien (Anda akan diminta setiap waktu, selalu jawab ya). Seperti yang ditunjukkan dalam jawaban lain, kunci-kunci tersebut kemudian akan disimpan dalam ~ / .ssh / known_hosts. Kemudian salin file ini ke setiap komputer klien yang nantinya Anda mungkin ingin sambungkan (mungkin untuk setiap akun pengguna yang Anda gunakan). Maka semua akun ini akan "tahu" komputer, karenanya tidak ada prompt.

Keuntungan lebih dari hanya menonaktifkan prompt adalah bahwa SSH benar-benar dapat memeriksa apakah ada serangan MITM.

sleske
sumber
1
Meskipun, jika Anda sering ssh melalui koneksi forward, Anda ingin menambahkan ini ke / etc / ssh / ssh_config: Host 127.0.0.1 NoHostAuthenticationForLocalhost ya
Dagelf
1

Jika Anda ingin menonaktifkan konfirmasi, daripada otentikasi, Anda dapat menggunakan opsi: "-o CheckHostIP = no"

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no [email protected]
RJ
sumber
OP sudah mendapat jawaban yang sama dan menerimanya.
Ayan
0

Ini mungkin karena server kunci ssh Anda berubah, karena server ip atau domain adalah sama tetapi ssh key mismatch.

Anda harus menghapus kunci yang tersimpan di /home/$user/.ssh/known_hostsuntuk menghindari pesan ini.

Saya memperbaikinya menghapus semua kunci dalam file itu, jadi token baru dibuat untuk nama domain ini.

IvanReed
sumber
1
Kunci yang diubah menghasilkan pesan yang jauh lebih jelek dengan sekotak tanda dan WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! dan IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!dalam huruf kapital semua. Pesan dalam pertanyaan hanya muncul jika belum ada entri di known_hosts.
dave_thompson_085
-1

Periksa izin pada ~/.ssh/known_hostsfile Anda . Milik saya salah ketika saya mendapat masalah ini. Saya memperbaikinya dengan:

chmod 0600 ~/.ssh/known_hosts
Andrew McCombe
sumber