SSH "REMOTE HOST IDENTIFICATION HAS CHANGED" uyarısı: ne yapmalıyım?

Linux Sunucu (SSH) 64 görüntülenme Markdown

Sunucuya her zamanki gibi bağlanmaya çalışıyorsunuz ve ekranı kaplayan, kırmızı harflerle bir uyarı çıkıyor:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Offending ECDSA key in /home/ali/.ssh/known_hosts:12
Host key verification failed.

Uyarı ürkütücü ama çoğu zaman zararsızdır. SSH ilk bağlantıda sunucunun "parmak izini" (host key) bilgisayarınızdaki known_hosts dosyasına kaydeder. Sonraki bağlantılarda bu kayıtla karşılaştırır. Aynı IP adresi bu sefer farklı bir parmak izi sunuyorsa SSH sizi korumak için bağlantıyı keser.

Bunun masum nedenleri

  • Sunucuyu panelden yeniden kurdunuz ya da işletim sistemini değiştirdiniz. Her kurulumda sunucu yeni anahtarlar üretir.
  • Silip yeni bir sunucu sipariş ettiniz ve size aynı IP adresi verildi.
  • Sunucuya eskiden başka bir adreste bağlandınız ve şimdi farklı bir anahtar türü (ECDSA yerine ED25519 gibi) öneriliyor.

Bu bir saldırı olabilir mi?

Teorik olarak evet: biri ağınızı ya da sunucuyu taklit ediyor olabilir. Pratikte, yakın zamanda sunucuyu yeniden kurmadıysanız uyarıyı ciddiye alın. Emin olmak için panelden VNC Konsol ile sunucuya girip gerçek parmak izini görün ve karşılaştırın:

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub

Çıktıdaki SHA256: ile başlayan değeri, bağlanırken SSH'ın size sorduğu değerle karşılaştırın. Aynıysa sunucu doğrudur.

Uyarıyı kaldırmak

Eski kaydı known_hosts dosyasından silin. Uyarının üstünde yazan satırdaki Offending ... key in ...:12 ifadesi dosyayı ve satır numarasını söyler. En kolayı:

ssh-keygen -R 203.0.113.10

IP adresini kendi sunucunuzunkiyle değiştirin; bir alan adıyla bağlanıyorsanız onu da ayrıca silin (ssh-keygen -R sunucu.ornek.com). Komut eski kaydı siler ve bir known_hosts.old yedeği bırakır. Sonra yeniden bağlanın; yeni parmak izini kabul etmek için yes yazın.

  • Windows (OpenSSH): dosya C:\Users\kullanici\.ssh\known_hosts içindedir; komut aynıdır.
  • PuTTY: "POTENTIAL SECURITY BREACH" penceresi açılır; parmak izini doğruladıktan sonra Accept ya da Connect Once seçin.
  • WinSCP ve FileZilla: benzer bir uyarı gösterir; doğruladıktan sonra yeni anahtarı kabul edin.

Uyarıyı hiç görmeyi bırakmak için yapılmaması gerekenler

Bu kontrolü kapatan StrictHostKeyChecking no ayarını kalıcı yapmayın. Uyarıyı susturmak, gerçek bir saldırıyı da susturmak demektir. Doğru çözüm eski kaydı silmek ve yenisini kabul etmektir. Bağlanamıyorsanız başka sebepler için SSH hataları ve zaman aşımı makalelerine bakın. Sunucu paketleri: Linux VDS.

Sık sorulanlar

ssh-keygen -R hangi dosyayı değiştirir?

Kendi kullanıcı klasörünüzdeki ~/.ssh/known_hosts dosyasını. Sunucuya hiçbir şey yapmaz, yalnızca bilgisayarınızın hatırladığı kaydı siler.

Uyarı sunucuyu hiç yeniden kurmadığım halde çıktı.

Bu durumda dikkatli olun. Parmak izini VNC Konsol'dan doğrulayın. Eşleşmiyorsa o ağdan bağlanmayın, parolanızı değiştirin ve yetkisiz erişim kontrol listesine bakın.

Toplu olarak birçok sunucuda bu hatayı alıyorum.

Aynı IP adreslerini farklı sunucular için yeniden kullanıyorsanız hepsi için ayrı kayıt silmeniz gerekir. Otomasyonda known_hosts dosyasını kendiniz yönetin; kontrolü kapatmak yerine ilk bağlantıda anahtarı ssh-keyscan ile alıp kaydedin.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.