SSH ana bilgisayarı doğrulama hatalarını işlemek için en sorunsuz iş akışı?


41

Bu, hepimizin karşılaştığı ve muhtemelen fazla düşünmeden elle çözdüğü basit bir konudur.

Sunucular değiştikçe, yeniden sağlandıklarında veya IP adreslerinin yeniden tahsis edilmesinden dolayı, aşağıdaki SSH ana bilgisayar doğrulama mesajını alırız. Bu ssh tanımlama hatalarını çözmek için iş akışını kolaylaştırmakla ilgileniyorum.

Aşağıdaki mesaj göz önüne alındığında, genellikle vi /root/.ssh/known_hosts +434ve ddrahatsız edici satırı kaldırır ( ).

Diğer kuruluşlardaki geliştiricilerin / kullanıcıların bu mesajı görmedeki tüm known_hosts dosyalarının sıkıntıdan silindiğini gördüm . O kadar ileri gitmesem de, bununla baş etmenin daha zarif bir yolu olduğunu biliyorum.

İpuçları?

[root@xt ~]# ssh las-db1

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
ed:86:a2:c4:cd:9b:c5:7a:b1:2b:cc:42:15:76:8c:56.
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:434
RSA host key for las-db1 has changed and you have requested strict checking.
Host key verification failed.

Aynı problemimiz var. NASA'nın Mesh ti.arc.nasa.gov/opensource/projects/mesh ile ilgili deneyimim yok ancak incelenecek teknoloji listemde.
Andrew Gilmartin,

1
Bir sunucuyu yeniden yüklerken / yeniden konumlandırırken neden eski anahtarı kopyalamıyorsunuz?
Random832

@ Random832 Çok sayıda sunucunuzun olduğu bir durumda ölçeklendirilmez ... Ya da sık sık IP adreslerini geri dönüştürdüğünüz bir laboratuar / test ortamınız varsa. Veya başka bir dava; orijinal sunucunun kullanılamadığı, planlanmamış bir sunucu değişimi ...
beyaza göre

3
Sahip olduğum en büyük soru şudur: Bu duruma nasıl girersiniz? Ana bilgisayar adlarını yeniden kullanıyorsanız, ana bilgisayar adlandırma standardınızı yeniden gözden geçirmek isteyebilirsiniz ( tools.ietf.org/html/rfc1178 ). IP adreslerini yeniden kullanıyorsanız, ssh anahtarlarının önceki IP adresinde önceki sunucunun kullanımdan kaldırılması ile aynı prosedürün bir parçası olarak kullanımınızın kaldırılması gerekir. IP yeniden kullanımının otomatik olarak gerçekleştiği ve yarı anlamsız ana bilgisayar adlarının zorunlu olduğu bir "webscal" ortamında çalışıyorsanız, o zaman ssh anahtarlarını sabitlemek için gerekli olan otomatik bir sunucu yaşam döngüsü sürecine sahip olmalısınız
Paul Gear

Yanıtlar:


47

ssh-keygenBelirli girdileri ana bilgisayardan kaldırmak için komutu kullanabilirsiniz :

ssh-keygen -R las-db1

Bu komutu yoksa, her zaman sed kullanabilirsiniz:

sed -i '/las-db1/d' /root/.ssh/known_hosts

3
Çakışan anahtarlarla sorunu çözmek için ssh-keygen -R kullanmak, Ubuntu'daki ssh istemcisinin bu sorun ortaya çıktığında hata mesajında ​​önerdiği şeydir.
Kenny Rasschaert

ssh-keygenKomuta geçişin farkında değildim . İyi!
ewwhite,

10
Kontrol etmeyi ve birisinin aslında "SOMETHING NASTY YAPMAK!" Olmadığından emin olun.
Michael Hampton

1
Bunu konferansta yapmadığınızdan emin olun!
Paul Gear,

2
@wwhite Ağınızdaki /etc/ssh/known_hostsdosyayı uygun ana bilgisayar tuşları (kukla ile yönetilen, vb.) ile doldurun veya kişisel ~ / .ssh / known_hosts dosyanızı doldurun (bunlardan birini yapmak ssh-keyscaniçin bilinen bir iyi / güvenli işlemin üstünden geçebilirsiniz) bağ). Bunu engelle (ve güvenlikle hiç ilgilenmediğini farz edersin) UserKnownHostsFile=/dev/nullve StrictHostKeyChecking=nosenin içinde ~/.ssh/config file(veya ssh ile seçeneklerini geç -o)
voretaq7

25

Bir kukla kullanıcısı olarak, bunu çözme yöntemim aslında kukla sunucumun SSH ana bilgisayar anahtarlarımı toplamasını ve bunları SSH bağlantısı yapan tüm sistemlerimde yayınlamasını sağlamaktır.

Bu şekilde onları kaldırmak için endişelenmeme gerek yok. Her otuz dakikada bir ajanlarımı çalıştırdığımdan beri, kuklaların yüzde doksan dokuzu benim için anahtarları çalıştırdı ve güncellendi. Benim için istisnalar çok nadir, bu yüzden beklemek istemiyorsam, bilinen sistemlerin hızlı bir şekilde düzenlenmesini önemsemiyorum.

class ssh::hostkeys {

  @@sshkey { "${::clientcert}_rsa":
    type => rsa,
    key => $sshrsakey,
    tag => 'rsa_key',
  }

  if 'true' == $common::params::sshclient {
    Sshkey <<| tag == 'rsa_key' |>> {
      ensure => present
    }
  }

  file {'/etc/ssh/ssh_known_hosts':
    ensure => present,
    owner => 'root',
    group => 'root',
    mode => 0644,
  }

}

+1 Yapılandırma yönetimi araçlarını kullanmak için iyi hareket.
ewwhite,

4

Güvenliğin daha az endişe verici olduğu çok özel durumlarda size yardımcı olabilecek bir öneri eklemek istiyorum.

Sık sık yeniden kurulan makinelerle bir laboratuar ortamım var. Her zaman, yeni ana bilgisayar anahtarları oluşturulur (ana bilgisayar anahtarını bir yere kaydedebilir ve kurulum sonrası komut dosyasında ayarlayabilirdim).

Bu laboratuar ortamında güvenlik benim için bir sorun olmadığından ve anahtarlar çok sık değiştiğinden, .ssh / config dosyasında aşağıdakiler var:

Host lab-*
  User kenny
  IdentityFile ~/.ssh/lab_id_rsa
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null

Bu, laboratuar makinelerime bağlanmanın bir daha asla bu hataya yol açmayacağından ve ssh istemcimin sadece ana bilgisayar anahtarını kontrol etmeden bağlanacağından emin olmanızı sağlar.

Bu, yalnızca güvenlik sizi hiç ilgilendirmiyorsa yapmanız gereken bir şeydir, çünkü bu sizi ortadaki adam saldırısı için savunmasız bir konuma sokar.


1
Riskli görünüyor. Bunlardan bazıları halka açık sistemler olduğundan, ana bilgisayar doğrulamasını korumak isterim.
ewwhite'de

1
Bu yöntemin sadece “güvenliğin önemsiz / endişe duymadığı bir yerde” olduğunu belirtti. Özel ağlar / laboratuvar ortamları bu yapılandırma için mükemmeldir. Çok makineli otomatik ölçeklendirme üretimi / halka açık sistemler, çok değil.
dannosaur

4

Göre openssh 5.6 sürüm notu , artık ana tuşlarını kullanmak gerekmez:

Ana bilgisayar tabanlı kimlik doğrulama artık sertifika ana bilgisayar anahtarlarını kullanabilir. CA anahtarları, sshd (8) 'de açıklandığı gibi @ cert-otorite işaretleyicisini kullanarak bir bilinen_hosts dosyasında belirtilmelidir.

Uyarı : Bu özelliği üretimde kullanan hiç kimseyi duymadım. Kendi sorumluluğunuzda kullanın (ancak openssh geliştiricilerinin böyle bir katil özelliği çok fazla test ve kod denetimi olmadan serbest bırakmayacak kadar paranoyak olduğuna inanıyorum).


2

SSHFP DNS ResourceRecord, ssh istemcinizden ne kadar faydalanacağına bağlı olarak yardımcı olabilir. Tüm ssh ortak anahtar parmak izlerinizi ana bilgisayar adıyla birlikte orada saklayın.

Önceden DNSSEC veya DNS'yi SSL üzerinden uygulayın.
http://www.ietf.org/rfc/rfc4255.txt

FreeIPA.org, PKI Sertifikalarının yanı sıra ana bilgisayar ve kullanıcı anahtarı yönetimini de yönetir. Ayrıca, yeni anahtarlar oluşturulduğunda SSHFP DNS kayıtlarını otomatik olarak yükler.

Sistem Güvenlik Hizmetleri Arka Plan Programı (SSSD), ana bilgisayar SSH anahtarlarını önbelleğe almak ve almak üzere yapılandırılabilir; böylece uygulamalar ve hizmetler, ana bilgisayar anahtarları için yalnızca bir konuma bakmak zorunda kalır. SSSD, FreeIPA'yı kimlik bilgi sağlayıcılarından biri olarak kullanabildiği için, FreeIPA evrensel ve merkezi bir anahtar deposu sağlar. Yöneticilerin ana bilgisayar SSH anahtarlarını dağıtma, güncelleme veya doğrulama konusunda endişelenmeleri gerekmez.

http://docs.fedoraproject.org/en-US/Fedora/17/html/FreeIPA_Guide/host-keys.html

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.