Uzaktaki ana makine tarafından gönderilen ECDSA anahtarının parmak izini kontrol edin [kapalı]


24

Bir sunucuya ssh göndermeye çalışırken bilinen uyarı iletisini aldım:

$ 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.

Ve nedenini biliyorum çünkü bu sunucunun ipini değiştirdim. Ama öyle olmasaydı, uzak ana bilgisayar tarafından gönderilen ECDSA anahtarının parmak izini nasıl kontrol edebilirdim?

Bunu yapmaya çalıştım:

echo -n ipofthehost | sha256sum

Ama aynı parmak izini anlamıyorum. Aynı zamanda "hostname, ip" yi de aynı şekilde aws'ta denedim ama eşleşmedim.

Girişimi known_hosts dosyamdan silersem ve tekrar ssh yapmaya çalışırsam, başarılı olur ve aşağıdakileri söyler:

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)? 

Peki parmak izi almak için sha256sum'u ne uygulıyor ve nasıl kontrol edebilirim?


2
Bilinen iyi bir değer olmadan kontrol edemezsiniz. Sadece SSHd'yi ilk başlattığınızda ve anahtarlar oluşturulduğunda not edin ve bilinen iyi değere karşı kontrol edin.

Sorunuzu düzelttim. Bu site sadece profesyonel bir iş ortamı ile ilgili soruları kabul eder. Burada ev ağları ile ilgili sorular çok açık, sorunuzu düzenlemeyle kaydetmeye çalıştım. Şu anda bu konuyu kapatmak için sorunuza karşı bir oylama var.
peterh Monica

@ user186340 "SSHd'yi ilk başlattığınızda yalnızca yazdığınız" doğru olduğu görülüyor. SSHd çalıştıran makineye erişiminiz varsa /etc/ssh/ssh_host_ecdsa_key.pubparmak izini almak için yapabilirsiniz . Daha yeni yaptım.
jamadagni

Yanıtlar:


12

Genel anahtar parmak izi, bir IP dizesinin basit karması değildir.

Kullanabileceğiniz uzak bir ana bilgisayar ortak anahtarını ssh-keyscan <IP>almak için parmak izinizi ( ssh-keygen -lf <public_key_file>) çıkarmak için normal araçları kullanabilirsiniz .

Sonunda, known_hostsdosyanızdaki mevcut parmak iziyle karşılaştırmayı yapabilirsiniz ssh-keygen -l -F <domain_or_ip>.


2
Neden SSH ile bağlanırken ve bir ecdsa anahtarını ilk kez zorlarken ( ssh -oHostKeyAlgorithms='ecdsa-sha2-nistp256' william@my.server), ECDSA key fingerprint is SHA256:sBKcTiQ5V.... etc.çalıştırdığımda ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pubbana 32 karakter altıgen aldım neden?
William Turrell

1
@WilliamTurrell Bu, sunucunuzun eski (muhtemelen açılış öncesi SSH 6.8) sürümüne sahip olması gerektiğinden ssh-keygen(veya sunucu sağlayıcınızın zamana uymamış olması ve hala yeni SHA256 yerine md5 karmaları sağlaması) nedeniyle gerçekleşiyor. Burada listelenen geçici çözümler var: superuser.com/questions/929566
SeldomNeedy

9

Biraz daha detaylı : Uyarı mesajı, uzak ana bilgisayar tarafından gönderilen ECDSA anahtarının parmak izini ifade ettiğinden, ana bilgisayarın genel (ecdsa) anahtarı hakkında bilgi toplarız:

ssh-keyscan -t ecdsa ip_or_hostmane > ecdsa_file_to_compare

O zaman, bilinen_top dosyamızdaki genel (ecdsa) anahtarın nerede olduğunu bulabiliriz:

ssh-keygen -l -F ipofhost

Parmak izlerini karşılaştırmak istiyorsak, bilinen_top dosyamızın içeriğini koymak zorundayız (sadece bu ana bilgisayarla ilgili giriş), ecdsa_file_from_known_hosts olarak adlandırabiliriz ve sonra bunları aşağıdaki gibi karşılaştırabiliriz:

ssh-keygen -lf ecdsa_file_to_compare
ssh-keygen -lf ecdsa_file_from_known_hosts

Şovun aynı karı olup olmadığını kontrol et.

Elbette uyuşmuyorlar, bu yüzden uyarı mesajını aldım (ssh bu eşlemeyi dahili olarak kontrol ediyor). Eğer ip değişikliğinden eminseniz (bu yüzden ortadaki bir adamın saldırısına uğramadık), bu konağın bilinen_top dosyamızdaki girdisini silebiliriz ve bir dahaki sefere yeni bir giriş için ssh bu dosyaya eklenecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.