Ketika saya ssh ke mesin, kadang-kadang saya mendapatkan peringatan kesalahan ini dan itu meminta untuk mengatakan "ya" atau "tidak". Ini menyebabkan beberapa masalah saat menjalankan dari skrip yang secara otomatis ssh ke mesin lain.
Pesan peringatan:
The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.
Apakah ada cara untuk secara otomatis mengatakan "ya" atau mengabaikan ini?
ssh
ssh-keys
rsa-key-fingerprint
Senthil A Kumar
sumber
sumber
Jawaban:
Bergantung pada klien ssh Anda, Anda dapat mengatur opsi StrictHostKeyChecking ke no pada baris perintah, dan / atau mengirim kunci ke file null known_hosts. Anda juga dapat mengatur opsi ini dalam file konfigurasi Anda, baik untuk semua host atau untuk set alamat IP atau nama host yang diberikan.
EDIT
Seperti yang dicatat @IanDunn, ada risiko keamanan untuk melakukan ini. Jika sumber daya yang Anda hubungkan telah dipalsukan oleh penyerang, mereka berpotensi dapat memutar ulang tantangan server tujuan kembali kepada Anda, membodohi Anda dengan berpikir bahwa Anda terhubung ke sumber daya jarak jauh sementara pada kenyataannya mereka terhubung ke sumber daya dengan kredensial Anda. Anda harus hati-hati mempertimbangkan apakah itu risiko yang pantas diambil sebelum mengubah mekanisme koneksi Anda untuk melewati HostKeyChecking.
Referensi .
sumber
Pertanyaan lama yang pantas dijawab.
Anda dapat mencegah prompt interaktif tanpa menonaktifkan
StrictHostKeyChecking
(yang tidak aman).Masukkan logika berikut ke dalam skrip Anda:
Ia memeriksa apakah kunci publik dari server masuk
known_hosts
. Jika tidak, ia meminta kunci publik dari server dan menambahkannya keknown_hosts
.Dengan cara ini Anda terkena serangan Man-In-The-Middle hanya sekali, yang dapat dikurangi dengan:
sumber
`ssh-keygen -F $IP
`seharusnya"`ssh-keygen -F $IP`"
(dalam tanda kutip), dalam kasus lain itu tidak akan ditafsirkan sebagai stringssh-keygen -F $IP >/dev/null || ssh-keyscan -H $IP >> ~/.ssh/known_hosts
Untuk menonaktifkan (atau mengontrol penonaktifan), tambahkan baris berikut ke awal
/etc/ssh/ssh_config
...Pilihan:
*
memungkinkan akses tidak terbatas ke semua IP./etc/ssh/ssh_config
untuk konfigurasi global atau~/.ssh/config
untuk konfigurasi khusus pengguna.Lihat http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html
Pertanyaan serupa di superuser.com - lihat https://superuser.com/a/628801/55163
sumber
Pastikan
~/.ssh/known_hosts
bisa ditulisi. Itu memperbaikinya bagi saya.sumber
.ssh
folder itu.0400
optimal (tolong perbaiki saya siapa saja) namun dalam kasus saya masalahnya hanyalah bahwa.ssh
folder untuk pengguna saya telah berubah kepemilikannya - sehingga membatalkan izin saya sendiri 0400.sudo
mengubah kepemilikan kembali kepada saya menyelesaikan masalah saya.Cara terbaik untuk melakukannya adalah dengan menggunakan 'BatchMode' di samping 'StrictHostKeyChecking'. Dengan cara ini, skrip Anda akan menerima nama host baru dan menulisnya ke file known_hosts, tetapi tidak akan memerlukan intervensi ya / tidak.
sumber
Edit file konfigurasi Anda yang biasanya terletak di '~ / .ssh / config', dan pada awal file, tambahkan baris di bawah ini
Set pengguna untuk
your_login_user
mengatakan bahwa pengaturan ini milik your_login_userStrictHostKeyChecking Anda setel ke tidak akan menghindari prompt
IdentityFile adalah jalur ke kunci RSA
Ini bekerja untuk saya dan skrip saya, semoga sukses untuk Anda.
sumber
IdentityFile
? Tampaknya bekerja tanpa itu juga ..Peringatan ini dikeluarkan karena fitur keamanan, jangan menonaktifkan fitur ini.
Hanya ditampilkan sekali.
Jika masih muncul setelah koneksi kedua, masalahnya mungkin secara tertulis ke
known_hosts
file. Dalam hal ini Anda juga akan mendapatkan pesan berikut:Anda dapat memperbaikinya dengan mengubah pemilik mengubah izin file agar dapat ditulis oleh pengguna Anda.
sumber
Dengan mengacu pada jawaban Cori, saya memodifikasinya dan menggunakan perintah di bawah ini, yang berfungsi. Tanpa
exit
, perintah yang tersisa sebenarnya masuk ke mesin jarak jauh, yang tidak saya inginkan dalam skripsumber
Lakukan ini ->
chmod +w ~/.ssh/known_hosts
. Ini menambahkan izin menulis ke file di~/.ssh/known_hosts
. Setelah itu host jarak jauh akan ditambahkan keknown_hosts
file ketika Anda terhubung ke waktu berikutnya.sumber
Idealnya, Anda harus membuat otoritas sertifikat yang dikelola sendiri. Mulai dengan membuat pasangan kunci:
ssh-keygen -f cert_signer
Kemudian tandatangani kunci host publik setiap server:
ssh-keygen -s cert_signer -I cert_signer -h -n www.example.com -V +52w /etc/ssh/ssh_host_rsa_key.pub
Ini menghasilkan kunci host publik yang ditandatangani:
/etc/ssh/ssh_host_rsa_key-cert.pub
Di
/etc/ssh/sshd_config
, arahkanHostCertificate
ke file ini:HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub
Mulai kembali layanan sshd:
service sshd restart
Kemudian pada klien SSH, tambahkan berikut ini ke
~/.ssh/known_hosts
:@cert-authority *.example.com ssh-rsa AAAAB3Nz...cYwy+1Y2u/
Di atas berisi:
@cert-authority
*.example.com
cert_signer.pub
The
cert_signer
kunci publik akan percaya server apapun yang kunci publik tuan rumah ditandatangani olehcert_signer
kunci pribadi.Meskipun ini membutuhkan konfigurasi satu kali di sisi klien, Anda dapat memercayai beberapa server, termasuk yang belum ditetapkan (selama Anda menandatangani setiap server, yaitu).
Untuk lebih jelasnya, lihat halaman wiki ini .
sumber
Secara umum masalah ini terjadi ketika Anda sering memodifikasi tombol. Berdasarkan server, mungkin perlu waktu untuk memperbarui kunci baru yang telah Anda buat dan tempelkan di server. Jadi setelah membuat kunci dan menempel di server, tunggu selama 3 hingga 4 jam dan kemudian coba. Masalahnya harus dipecahkan. Itu terjadi pada saya.
sumber
Tambahkan ini ke / etc / ssh / ssh_config Anda
sumber
Jalankan ini di server host itu masalah firasat
sumber
Saya memiliki kesalahan yang sama dan ingin menarik perhatian pada kenyataan bahwa - seperti yang terjadi pada saya - Anda mungkin hanya memiliki hak yang salah.
Anda telah mengatur
.ssh
direktori Anda sebagai biasa atauroot
pengguna dan dengan demikian Anda harus menjadi pengguna yang benar. Ketika kesalahan ini muncul, sayaroot
tetapi saya dikonfigurasi.ssh
sebagai pengguna biasa. Keluarroot
memperbaikinya.sumber
Saya mengatasi masalah yang memberikan kesalahan tertulis di bawah ini:
Kesalahan:
Keaslian host 'XXX.XXX.XXX' tidak dapat dibuat.
Sidik jari kunci RSA adalah 09: 6c: ef: cd: 55: c4: 4f: ss: 5a: 88: 46: 0a: a9: 27: 83: 89.
Larutan:
1. instal alat openSSH apa pun.
2. jalankan perintah ssh
3. ia akan meminta Anda menambahkan host ini seperti. terima YA.
4. Host ini akan menambahkan daftar host yang dikenal.
5. Sekarang Anda dapat terhubung dengan host ini.
Solusi ini berfungsi sekarang ......
sumber