Saya mencoba menyiapkan SSH-tanpa-kata sandi pada server Ubuntu ssh-copy-id myuser@myserver
, tetapi saya mendapatkan kesalahan:
Peringatan: kunci host ECDSA untuk 'myserver' berbeda dari kunci untuk alamat IP '192.168.1.123'
Apa yang menyebabkan ini, dan bagaimana cara memperbaikinya? Saya mencoba menghapus .ssh
direktori pada mesin jarak jauh, dan berjalan ssh-keygen -R "myserver"
secara lokal, tetapi ini tidak menyelesaikan kesalahan.
ssh
security
ubuntu-server
ssh-keys
Cerin
sumber
sumber
The ECDSA host key for server has changed
. Cara saya adalah menghapus string cache terkait tentang domain di~/.ssh/known_hosts
. Kemudian ssh bekerja.Jawaban:
Hapus kunci yang di-cache untuk
192.168.1.123
di mesin lokal:sumber
ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hosts
setelah itu Anda tidak perlu memverifikasi kunci baru saat pertama kali terhubung ke host.Dalam kasus saya
ssh-keygen -R ...
tidak memperbaiki peringatan. Saya punya informasi tambahan seperti ini:Saya cukup diedit
~/.ssh/known_hosts
dan dihapus secara manual 8 baris ("kunci menyinggung"). Saya mencoba menyambung kembali, tuan rumah secara permanen ditambahkan, dan semuanya baik-baik saja setelah itu!sumber
sed -e '8d' /home/myuser/.ssh/known_hosts
, mengganti nomor baris8
dan nama file dengan yang ditampilkan pada sistem Anda.known_hosts:8
merujuk pada nilai yang diindeks nol atau tidak. Senang mengetahui bahwa ini adalah pemetaan 1: 1 ...ssh-keygen -R [hostname]:2022
~/.ssh/known_hosts
, saya mendapatkan pesan bahwa keasliannya tidak dapat dibuat dan "Apakah Anda yakin ingin terus terhubung". Menjawab "ya" mencoba dan gagal tersambung. Jika saya mencoba menghubungkan kedua kalinya, saya mendapatkan kesalahan kunci host ECDSA yang sama dengan yang saya mulai.Saya melakukan banyak ssh-ing antara komputer LAN saya dan dua akun webhosting saya, jadi saya telah menyortir semua jenis peluang dan berakhir dengan SSH, termasuk masalah otentikasi menggunakan
ssh -v
untuk melihat di mana dan apa yang salah.Baru saja menyelesaikan masalah ini dan tidak senang dengan jawabannya, saya ingin benar-benar tahu "mengapa" saya sendiri ...
Pemicu untuk kasus saya adalah: menginstal OS server baru di tempat kerja dan setelah menginstal paket openssh-server, satu set kunci host baru dibuat di server kerja. Sebelumnya, semua OS server saya adalah Ubuntu dan kali ini berubah menjadi Debian (dan saya curiga ada perbedaan perbedaan dalam izin).
Ketika semua OS adalah Ubuntu dan saya menginstal ulang OS server, setelah SSH pertama masuk, saya mendapatkan peringatan semacam ini, yang saya lebih suka daripada peringatan diam di atas!
Lalu saya buka ~/.ssh/known_hostsdi komputer yang memulai ssh, hapus baris itu, sambungkan kembali dan ini terjadi:
Itu sedikit tentang: 11122 adalah nomor port I rute SSH dari pada firewall
Saya memeriksa cadangan dari server Ubuntu lama dan berbeda dengan pemasangan Debian baru saya:
Jadi ya, sepertinya, tuan rumah mulai menggunakan kunci ecdsa baru-baru ini, yang berdasarkan perubahan Ubuntu belakangan ini, saya akan menyalahkan pembaruan. Pergeseran Ubuntu dari OS linux yang sangat saya andalkan adalah alasan mengapa saya menginstal Debian kali ini.
Saya membaca security.SE q / a di ecdsa dan telah menghapus baris itu dari
sshd_config
server Debian baru saya. (dan berlariservice ssh restart
)sumber
ubuntu debian server
dan Anda akan melihat apa yang saya maksud.Prompt terjadi setiap waktu karena alamat IP berubah setiap saat ketika menggunakan pengalamatan dinamis. Cobalah untuk menggunakan IP statis sehingga Anda hanya perlu menambahkan kunci sekali saja.
sumber
ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.123
Ini harus mengganti kunci yang ada di bawah known_hosts.old dan membuat yang baru. Solusi ini bekerja untuk saya dalam skenario yang sama
sumber
Saya menambahkan baris-baris berikut ke ~ / .ssh / config saya, sehingga menonaktifkan host ketat yang memeriksa semua alamat lokal. (dengan alokasi alamat DHCP, alamat ip mesin lokal saya selalu berubah)
Anda masih mendapatkan peringatan itu, yang menurut saya baik-baik saja.
sumber
Apakah Anda menggunakan pengguna yang sama untuk menghubungkan?
Jika Anda masuk ke PC lokal seperti pengguna John dan terhubung ke server B seperti pengguna Adolf @ B dan semuanya OK, itu tidak berarti semuanya baik-baik saja jika Anda masuk ke PC lokal seperti pengguna Jane dan menghubungkan ke server B seperti pengguna Adolf @ B .
Jika Anda ingin masuk di server B sebagai pengguna Beda dari PC A tanpa kata sandi, coba perintah ini, semua dari PC A :
Perintah ini menghasilkan kunci dan menyimpan kunci dalam file. Harap kosongkan frasa sandi .
Perintah ini membuat direktori, jika belum ada. Jika tidak, jangan cetak pesan kesalahan.
Perintah ini mengubah direktori ke direktori home pengguna Anda ./ssh.
Perintah ini mencetak file id_rsa.pub (kunci publik Anda) ke dalam otor_keys di server.
PENTING: Beda adalah nama pengguna Anda di server yang Anda sambungkan, B adalah IP server Anda.
Sekarang, Anda dapat terhubung ke server B tanpa kata sandi atau frasa sandi:
sumber
Utas di sini dapat membantu.
Pada dasarnya, Anda ingin menghapus kunci RSA dan ECDSA untuk host itu, kemudian gunakan
ssh-keyscan
untuk memasukkannya kembali keknown_hosts
file Anda dengan cara yang tidak akan menyebabkan konflik ini. Itu bekerja untuk saya ketika saya memiliki masalah yang sama.sumber
Pertanyaan: Apa yang menyebabkan ini, ...?
Jadi kunci host server ssh berubah. Apa yang menyebabkan perubahan? Sulit dikatakan. Berikut ini beberapa tebakan:
Pertanyaan: ... dan bagaimana cara memperbaikinya?
Seperti yang sudah dijawab orang lain, hapus kunci host ECDSA dalam cache untuk server saya yang telah di-cache akun Anda.
sumber
Kesalahan ini terus mengganggu saya untuk waktu yang lama. Untuk beberapa alasan itu membuat perbedaan apakah saya akan melakukan
atau
https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh
kemudian menunjuk saya ke opsi untuk mengubah file konfigurasi. Lihat skrip saya https://askubuntu.com/a/949731/129227 di sana untuk mengotomatiskan proses.
sumber
CanonicalizeHostname
dan tidakCanonicalDomains
akan menghapus pemeriksaan ketat dan akan membuat ssh menganggap host dan host.domain sama.Saya memperbaikinya di Chromebook dengan menghapus dan menginstal ulang Secure Shell ... Ini berfungsi seperti pesona.
sumber
Berikut ini cara menghapus sidik jari host yang dikenal (dari
known_hosts
file) di Chrome OS:Temukan indeks entri host yang menyinggung dalam output ssh ketika koneksi gagal. Misalnya pada baris di bawah ini, indeks yang menyinggung adalah 7 :
Buka konsol JavaScript ( CTRL+ Shift+ J) dari jendela Secure Shell dan ketik berikut ini, ganti
INDEX
dengan nilai yang sesuai (misalnya 7 ):Solusi ini dipinjam dari Blog Leo Gaggl .
sumber