Sıkı RSA anahtar denetimi SSH’de nasıl kaldırılır ve burada sorun nedir?


42

Ne zaman bağlansam, bana SSH ana bilgisayar anahtarını değiştiren mesajı gösteren bir Linux sunucum var:

$ ssh root @ host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @ @ UYARI: UZAKTAN HOST TANIMI DEĞİŞTİRİLDİ! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@@@@@@@@@ BAZI BİR ŞEY YAPIYOR OLMASI MÜMKÜNDÜR! Birisi şu anda seni dinliyor olabilir (ortadaki adam saldırısı)! RSA ana bilgisayar anahtarının yeni değiştirilmiş olması da mümkündür. Uzak ana makine tarafından gönderilen RSA anahtarının parmak izi 93: a2: 1b: 1c: 5f: 3e: 68: 47: bf: 79: 56: 52: f0: ec: 03: 6b'dir. Lütfen sistem yöneticinize başvurun. Bu iletiden kurtulmak için /home/emerson/.ssh/known_hosts dizinine doğru ana bilgisayar anahtarını ekleyin. /Home/emerson/.ssh/known_hosts:377’de rahatsız edici anahtar

Ana bilgisayar1 için RSA ana bilgisayar anahtarı değişti ve sıkı bir denetim istediniz. Ana bilgisayar anahtarı doğrulaması başarısız oldu.

Oturum açtığım birkaç saniye boyunca beni tutuyor ve ardından bağlantıyı kapatıyor.

host1: ~ / .ssh # Uzaktaki ana bilgisayardan okuyun host1: Eşdüzeyce bağlantı sıfırlandı Host1'e bağlantı kapalı.

Ne olduğunu ve bu sorunu çözmek için neler yapabileceğimi bilen var mı?


Yanıtlar:


68

Lütfen bilinen tüm evrak dosyalarını silmeyin, bazı kişiler tarafından önerildiği gibi, bu tamamen uyarının amacını geçersiz kılar. Orta saldırıdaki bir adamın olabileceği konusunda sizi uyarmak bir güvenlik özelliğidir.

Neden bir şeylerin değiştiğini düşündüğünü tanımlamanızı öneririm, büyük olasılıkla bir SSH yükseltmesi olası bir güvenlik açığı nedeniyle şifreleme anahtarlarını değiştirdi. Daha sonra bu belirli satırı known_hosts dosyanızdan temizleyebilirsiniz:

sed -i 377d ~/.ssh/known_hosts

Bu d uyarı kolon sonra gösterildiği gibi hat 377 eletes:

/home/emerson/.ssh/known_hosts:377

Alternatif olarak, aşağıdakileri yaparak ilgili anahtarı kaldırabilirsiniz.

ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)

Lütfen tüm dosyayı temizlemeyin ve belirli bir anahtarı temizlemeden önce bunun gerçekten bağlanmak istediğiniz makine olduğundan emin olun.


Bir anahtar uyuşmazlığı nedeniyle 350'den fazla sunucuyu silmeyecek. Bağlantıyı neden kapattığına dair bir fikrin var mı?
setatakahashi

İlgili known_hosts kaydını kaldırdığınızda bir kez çözülmedi mi? Değilse, ssh istemcisini ayrıntılı modda çalıştırabilir ve bir yere yapıştırabilirsiniz.
Adam Gibbins

1
Makineyi kapatıyor, çünkü ana bilgisayar anahtarı geçersiz, tıpkı söylediği gibi. Güvenlik konusunda ciddiyseniz, ana bilgisayar anahtarının yasal bir nedenden dolayı değiştiğinden emin olmak için sunucunun yöneticisine danışmanız gerekir. Öyleyse, Adam tarafından açıklandığı gibi değiştirebilirsiniz.
Matthew Flaschen

Önerinizi takip ettim ama $ sed -i "46 d" ~ / .ssh / known_hosts sed: 1: "/Users/myusr/.ssh ...": l komutunun sonunda fazladan karakter var, ben de onu elle kaldırdım vim ve işe yaradı. Thanx!
Luis Ramirez-Monterosa

3
Adam'ın sözdizimi neredeyse doğrudur, ancak "377" ve "d" arasında bir boşluğa ihtiyacınız vardır. Ayrıca, OS X'te bilinen ana bilgisayarlar ~ / .ssh / known_hosts; bir "eksikliği" olduğuna dikkat edin. dosya adına.
ktappe

27

Bence buradaki cevapların bazıları OP'nin sorusunda önerilen eylem tarzını ele alsa da, soruyu tam olarak cevaplamıyor.

Soru, "SSH’de sıkı RSA anahtar denetimi nasıl kaldırılır ve burada sorun nedir?"

Buradaki sorun, diğerleri tarafından önerildiği gibi, sunucunun yeniden kurulması nedeniyle ana bilgisayardaki bir değişikliktir (en yaygın senaryo). Ve önerilen çözüm gerçekten rahatsız edici anahtarı .ssh / yetkili_keys dosyasından satır içi ayarlı bir dosyadan kaldırmaktır.

Ancak “ SSH'de sıkı RSA anahtar kontrolü nasıl kaldırılır ” sorusunun özel bir kısmına hitap eden herhangi bir cevap görmedim .

StrictHostKey denetimi, ssh yapılandırma dosyanızda, genellikle de depoda kaldırabilirsiniz ~/.ssh/config.

Örnek bir Host bloğu aşağıda verilmiştir:

Host 101
  HostName yourip|hostname
  User youruserid
  IdentityFile /path/to/keyfile
  Port 22
  StrictHostKeyChecking no

Özellikle eklenen satır StrictHostKeyChecking notam olarak ne yaptığını yapan satırdır . Özel senaryounuza bağlı olarak, bu, adanmış bir sunucuda birden fazla sanallaştırılmış kapsayıcı çalıştırmak, sadece birkaç ips'de, aynı ipte başka bir örneği durdurup başlatmak gibi sizin için yararlı olabilir.


3
+1 Çünkü bu mesaj aslında hata mesajının katı kontrol bölümünü ele alıyor.
Shibumi

1
Sorunun içeriğini ele aldığım için de benden +1. Faktörlere bağlı olarak daha fazlası olabilir. Bu yaklaşım, "sıkı" dan "bazılarına (terminolojim)" den ev sahibi kontrolünü düşürür. Benim durumumda, ssh ile giriş yapmamı engellemek için iznini bıraktı, çünkü giriş yapmak istediğim yol bir şifre girmekti ve bu da "bazı" sunucu kontrolleri tarafından engellendi. Bu yüzden devam etmeli ve / dev / null komutunu "UserKnownHostsFile" olarak kullanmak için ssh komutunu kullanmalısınız. Bu, ana bilgisayar kontrolünü etkin "yok" olarak ayarlar ve yukarıdaki DIRE WARNINGS uygulanır, bu nedenle küresel ya da kalıcı olarak yapmayın.
cardiff uzay adamı

Bu gerçekten zarif bir çözüm. Paylaşım için teşekkürler!
LeOn - Han Li,

10

StrictHostKeyChecking'i kaldırmanın başka bir yolu, yalnızca tek bir sunucu için yapmanız gerektiğinde:

ssh <server> -o StrictHostKeyChecking=no

Oturum açmanıza izin verir, ancak sorunu kalıcı olarak düzeltmez.
Andres Canella

Bunu yaptığımda, bana anahtarı ekleme şansını veriyor, bu da sorunu kalıcı olarak düzeltir
Greg Dougherty

Belki de farklı sorunumuz var? Daha önce farklı bir IP'ye sahip bir sunucuya bağlanıyorum.
Andres Canella

Verileri değişen bir sunucunuz varsa, bilinen ana bilgisayar dosyanızdan silmeniz gerekir (ilk önce değişikliğin doğru olduğunu belirledikten sonra) ve yeni bilgisini ekleyin. Yeni bir sunucunuz varsa, -o sunucuya bağlanmanıza ve onun bilgilerini eklemenize izin verir.
Greg Dougherty

StrictHostKeyChecking'i config ayarlarınızda YES'e ayarlamak ve sadece yeni bir sunucuya bağlandığınızı veya eski bir sunucudaki anahtarları kendiniz değiştirdikten sonra bu anahtarı kullanmanızın iyi bir uygulama olduğunu düşünüyorum.
mohak

5

Her şeyden önce, bu senin makinen mi? Ana bilgisayar anahtarlarını bilerek değiştirdiniz mi? Olmazsa, bir şeylerin bu verileri değiştirdiğinden çok endişe duyarım.

İkincisi, ssh hata ayıklamasını aç,

ssh -vvv user@host

ve size neler anlattığını görün, ipuçlarını aramaya çalıştığınız sunucuda / var / log / secure ve / var / log / mesajlarına da bakmaya çalışın, sshd iyi hata mesajları verir.

Üçüncüsü, bu makine internete bağlı mı? Kök girişlerine gerçekten izin vermeli misiniz?


1
Root logins comment için +1
Fahad Sadah

Bu hatanın gerçekleşmesi için gereken tek şey, yeniden hedeflenen hedef makinedir. Bir DMZ'nin tarafındaki bir hedefe bağlanıyorsanız, bir MitM saldırısı pek olası değildir.
ktappe

3

Bunu alıyorsunuz çünkü bir şeyler değişti (yeni NIC, yeni IP, sunucu yazılımındaki değişiklik gibi). Güvenlik odağı SSH ana bilgisayar anahtar koruması hakkında güzel bir makaleye sahiptir .

$HOME/.ssh/known_hostsDosyayı düzenleyerek anahtarı (SFTP veya benzerini kullanarak) sunucudan kaldırın ve bir sonraki bağlantıda yenisini kabul edin.

StrictHostKeyChecking ayarı nedeniyle bağlantınız kopuyor olabilir. Benzer bir sorun için bu konuya bakın .


2
Noooo, lütfen bunu yapma. Bu, bu özelliğin sağladığı tüm güvenliği tamamen geçersiz kılar. Lütfen bilinen tüm ana bilgisayarları değil yalnızca değişen belirli bir anahtarı kaldırın.
Adam Gibbins

5
Known_hosts dosyasını kaldırmanızı tavsiye etmedim, düzenlemeyi ve anahtarı ondan çıkarmanızı önerdim.

Ooop, üzgünüm, yanlış okudum.
Adam Gibbins

2
Bu mesaj kesinlikle yeni bir IP adresiyle tetiklenemez, yeni bir NIC tarafından çok daha az. Adam Gibbins'in doğru cevabını görün.
bortzmeyer

1
Oy vermeden önce (İnsanları bununla çok mutlu olduklarını tespit ediyorum), araştırmanızı yapın. Bu Security Focus makalesini okuyun, securityfocus.com/infocus/1806 . Biraz alıntı yapıyorum: "Neden bir ana bilgisayar anahtarı değişebilir? Bağlanmak istediğiniz makine farklı bir DNS adına veya IP adresine taşındı veya tamamen yeni bir tanesiyle değiştirildi." Bir cevap çok yanlış ise, lütfen bir düzeltme şansı verin. Sonuçta, bu bir wiki.

3

'Host' (genel olarak tanımlandığı gibi, bir yeniden kurulumdan / çoklu önyüklemeden tamamen farklı bir bilgisayara, daha önce bağlandığınız bir IP adresine sahip olan her şey olabilir, örneğin] ssh istemcisine değiştirmiş gibi görünüyor. hata.

Sıkı kontrolün kapatılması gereksizdir, ayrıca kayıtlı anahtarların toptan silinmesi mantıklı değildir.

Belirli bir ana bilgisayar adı veya IP adresi için known_hosts içinde listelenen iki farklı anahtarın olması oldukça mümkündür; Bilinenlere göre şu anda bilinen 'eski' anahtara ihtiyaç duyabileceğinizi düşündüğünüze göre 2 alternatif vererek

OP için bilinen bilinen ana bilgisayarların l377'sinde atıfta bulunduğunuz anahtarı silin veya her ikisini de saklayın

Bilinen_host'larda anahtarların silinmesini engelleyerek ikisini de korumanın en basit yolu,

  1. Known_hosts [@ l377] 'de geçici olarak başvurulan' eski 'girişinin başlangıcına # eklemek için known_hosts düzenleyin
  2. [Ssh'ı ana bilgisayara bağla], yeni anahtarı 'otomatik olarak' ekleme istemini kabul edin
  3. Sonra # kaldırmak için known_hosts yeniden düzenleyin

Daha fazla cevap "known_hosts doğru anahtar Ekle" / hostname başına birden fazla ssh bilgisayar tuşları?


İki anahtar numarası hakkında hiçbir fikrim yoktu. Bu belgelenmiş davranış değil, değil mi?
hackerb9
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.