Peringatan "Identifikasi host jarak jauh telah berubah" saat menghubungkan melalui SSH

21

Saya mendapat pesan ini hari ini ketika mencoba masuk ke server saya. Apa yang harus saya lakukan? Apa yang sedang terjadi?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.
myusuf3
sumber
2
Sebagai tambahan, Anda mungkin ingin menghindari login secara lokal dan jarak jauh sebagai root, dan alih-alih menggunakan pengguna yang tidak memiliki hak istimewa yang dikombinasikan dengan sudo.
Steve Beattie

Jawaban:

12

Apakah Anda baru saja menginstal ulang OS di server Anda atau yang seperti itu? Itu akan menyebabkan ini.

Untuk memperbaikinya: http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

Solusi # 1: Hapus kunci menggunakan ssh-keygen

Gunakan -Ropsi untuk menghapus semua kunci yang dimiliki nama host dari file known_hosts. Opsi ini berguna untuk menghapus host hash. Jika nama host jarak jauh Anda adalah server.example.com, masukkan:

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

Sekarang, Anda dapat terhubung ke host tanpa masalah.

Solusi # 2: Tambahkan kunci host yang benar di /home/user/.ssh/known_hosts

Tidak perlu menghapus seluruh file known_hosts, cukup baris yang menyinggung dalam file itu. Misalnya jika Anda memiliki 3 server sebagai berikut.

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

Untuk menghapus server ke-2 (myserver.com), buka file:

# vi +2 .ssh/known_hosts

Dan tekan perintah dd untuk menghapus baris. Simpan dan tutup file. Atau gunakan yang berikut

$ vi ~/.ssh/known_hosts

Sekarang pergi ke baris # 2, ketikkan perintah berikut

:2

Sekarang hapus baris dengan dd dan keluar:

dd
:wq

Atau Anda dapat menggunakan perintah sed sebagai berikut untuk menghapus kunci yang menyinggung di baris # 44:

$ sed -i 44d ~/.ssh/known_hosts

Solusi 3: Hapus saja file known_hosts Jika Anda hanya memiliki satu ssh server

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

Coba sambungkan lagi dengan ssh
Sekarang Anda seharusnya bisa menghubungkan server Anda melalui ssh:

ssh username@server-ip-here
ssh [email protected]

Selanjutnya, Anda akan mendapatkan prompt baru untuk menambahkan kunci ~/.ssh/known_hostssebagai berikut:

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.
Yesaya
sumber
9
Perhatikan bahwa jika Anda TIDAK mengubah kunci host SSH server Anda, Anda tidak boleh mengganti salinan kunci host Anda, karena itu mungkin merupakan tanda bahwa seseorang berusaha menumbangkan komunikasi Anda dengan melakukan serangan man-in-the-middle.
Kees Cook
7

Dari apa yang bisa saya katakan, semua jawaban ini adalah tentang menekan peringatan itu, bukannya menanganinya. Singkatnya, peringatan itu memberi tahu Anda bahwa server tidak terlihat seperti dulu; lihat https://en.wikipedia.org/wiki/Man_in_the_middle_attack mengapa ini bisa berbahaya.

Baca man ssh, terutama bagian ini:

MEMVERIFIKASI KUNCI HOST

Saat menghubungkan ke server untuk pertama kalinya, sidik jari kunci publik server disajikan kepada pengguna (kecuali jika opsi StrictHostKeyChecking telah dinonaktifkan). Sidik jari dapat ditentukan menggunakan ssh-keygen (1) :

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

Agar aman, Anda (atau seseorang yang Anda percayai) harus menjalankan perintah ini terlebih dahulu di server yang Anda sambungkan. Ini akan memberi Anda semacam sidik jari seperti yang diberikan dalam peringatan dalam pertanyaan. Tentu saja, sering kali Anda tidak memiliki info ini, tetapi jika Anda memiliki alasan untuk mencurigai ada sesuatu, menjalankan perintah itu adalah cara untuk memeriksa apakah tanda tangan server telah benar-benar berubah, atau jika mungkin ada sesuatu yang mencurigakan sedang terjadi.

tidak tahu malu
sumber
1
Gunakan ini jika host Anda menyediakan sidik jari sha256 bukan hash md5. ssh -o FingerprintHash=md5 example.org
Declan McKenna
1
Lebih lanjut tentang FingerprintHash: superuser.com/questions/929566/… (mis. Sha256 harus lebih disukai, tetapi Anda mungkin tidak tahu nilai itu jika Anda belum cukup
memutakhirkannya
2

Saya menghadapi masalah yang sama, dan jika Anda tidak ingin menghapus seluruh known_hostsfile, Anda dapat menjalankan perintah berikut:

ssh-keygen -R 10.10.10.69

Tidak ada masalah dengan menghapus known_hosts. Anda hanya perlu menambahkan setiap server yang Anda hubungkan, ke daftar setiap kali Anda terhubung. Mungkin mengacaukan skrip Anda juga, karena tuan rumah belum dipercaya. Peringatan terjadi ketika tanda tangan host (komputer yang Anda coba sambungkan ke kunci baru yang dihasilkan, biasanya karena menginstal ulang, atau rotasi tombol.)

theTuxRacer
sumber
0

Jika Anda yakin bahwa peringatan itu positif palsu, Anda dapat menghapus / root / ssh / known_hosts Anda untuk memulai verifikasi baru.

Ta Coen
sumber
3
Tolong jangan lakukan ini, Anda akan kehilangan host lain yang dikenal. Sebaliknya, jika Anda yakin itu adalah false positive maka hapus baris tertentu: "known_hosts: 8" line 8 dalam kasus ini.
Roger Light
0

Jika Anda baru saja menginstal ulang server, atau mengubah kunci host, mungkin aman untuk menghapus baris 8 dari file ~ / .ssh / known_hosts Anda dan menambahkan kembali server (dengan ssh'ing untuk itu, dan menjawab "ya "ketika meminta verifikasi kunci)

elzapp
sumber
0

Karena server Anda berada di jaringan lokal, Anda bisa cukup percaya diri.

Jika Anda menginstal ulang sistem Anda, ini normal, tetapi alih-alih menghapus file known_hosts Anda, saya akan menyarankan untuk melakukannya echo "" > ~/.ssh/known_hosts

Popinou
sumber
Orang masih dapat memainkan trik di jaringan lokal. Jaringan bisnis atau sekolah dapat memiliki banyak ruang untuk tidak dipercaya.
Azendale
0

ssh -q melakukan trik ini juga.

Biasa
sumber
0

Salin baris ini, tetapi masukkan nama pengguna dan nama host / IP untuk userdan remote-server:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

Sebagai contoh:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

Dan tempel di terminal lokal Anda dan jalankan. Ini berhasil untuk saya.

dheerendra
sumber
0

Pada simpul klien tempat Anda mengeluarkan ssh,

vi ~/.ssh/known_hosts

Hapus semua baris yang dimulai dengan alamat IP yang berada di jaringan yang sama dengan IP yang Anda coba ssh. Ini akan memaksa simpul klien untuk menambahkan (ECDSA) permenently ke daftar host yang dikenal.

Anthony Awuley
sumber