Saya telah mendapatkan pesan peringatan yang terkenal saat mencoba ssh ke server:
$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:10
ECDSA host key for ipofmyhost has changed and you have requested strict checking.
Host key verification failed.
Dan saya tahu mengapa karena saya mengubah ip server tersebut. Tetapi jika tidak, bagaimana saya bisa memeriksa sidik jari untuk kunci ECDSA yang dikirim oleh host jarak jauh?
Saya telah mencoba melakukannya dengan:
echo -n ipofthehost | sha256sum
Tapi saya tidak mendapatkan sidik jari yang sama. Saya juga mencoba "hostname, ip" seperti di aws tapi saya tidak cocok.
Jika saya menghapus pintu masuk dari file known_hosts saya dan saya mencoba ssh lagi, itu berhasil dan memberi tahu berikut ini:
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)?
Jadi untuk apa menerapkan sha256sum untuk mendapatkan sidik jari dan bagaimana saya bisa memeriksanya?
ssh
fingerprint
gugol
sumber
sumber
/etc/ssh/ssh_host_ecdsa_key.pub
untuk mendapatkan sidik jari. Saya baru saja melakukannya.Jawaban:
Sidik jari kunci publik bukan hash sederhana dari string IP.
Untuk mengambil kunci publik host jarak jauh yang dapat Anda gunakan
ssh-keyscan <IP>
maka Anda dapat menggunakan alat biasa untuk mengekstrak sidik jarinya (ssh-keygen -lf <public_key_file>
).Akhirnya Anda dapat membandingkan dengan sidik jari saat ini di
known_hosts
file Anda denganssh-keygen -l -F <domain_or_ip>
.sumber
ssh -oHostKeyAlgorithms='ecdsa-sha2-nistp256' [email protected]
) itu memberi saya sidik jari alfanumerik 43 digit (ECDSA key fingerprint is SHA256:sBKcTiQ5V.... etc.
) namun ketika saya menjalankanssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
saya mendapatkan hex karakter 32 ??ssh-keygen
(atau penyedia server Anda tidak mengikuti perkembangan zaman dan masih hanya menyediakan hash md5 alih-alih SHA256 yang baru). Ada beberapa solusi yang tercantum di sini: superuser.com/questions/929566Sedikit lebih detail : Karena pesan peringatan mengacu pada sidik jari untuk kunci ECDSA yang dikirim oleh host jarak jauh, kami mengumpulkan info tentang kunci publik (ecdsa) dari host:
Lalu kita bisa mencari tahu di mana di file known_hosts kita bahwa kunci publik (ecdsa) adalah:
Jika kita ingin membandingkan sidik jari kita harus meletakkan konten file known_hosts kita (hanya entri yang terkait dengan host ini), kita dapat menyebutnya ecdsa_file_from_known_hosts dan kemudian membandingkannya sebagai berikut:
Dan periksa apakah acaranya sama.
Tentu saja mereka tidak cocok, itu sebabnya saya mendapat pesan peringatan (ssh memeriksa pencocokan ini secara internal). Jika kami yakin tentang perubahan ip (jadi kami tidak menderita serangan man-in-the-middle), kami cukup menghapus entri host itu di file known_hosts kami dan saat berikutnya kami ssh ke dalamnya entri baru baru untuk itu akan ditambahkan ke file tersebut.
sumber