`~ / .Ssh / known_hosts` dosyamı geçici olarak yoksay?


48

Dosyamı geçici olarak görmezden gelmenin bir yolu var mı ~/.ssh/known_hosts?

mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$ 

NOT:

.. bir kaç cevap (lar) / yorum (lar) ile sorumun biraz yanıltıcı olduğunu, çok kısa bir süre beklenen davranış olduğunu fark ettim, bu yüzden normal (benim durumumda) bunun arkasındaki geçerli bir neden var. "yoksay" görmek istiyorum


9
Yanlış soruyu soruyorsun. Sorunu "görmezden gelmemelisiniz"; ne olduğunu çözmeli ve çözmelisin.
Michael Hampton

9
Kullanıcı için konuşamıyorum, ancak bir örnek, yinelemeli iş akışınızın oluşturma işlemini, birleştirmeyi, test etmeyi, değiştirmeyi ve yeniden oluşturmayı içerdiği otomatik bir yükleme işlemi geliştirdiğiniz bir durum olabilir (örneğin bir hızlı başlangıç) tekrar tekrar çizik.
Goladus

10
@MichaelHampton - VMware ve VirtualBox misafirler için IP adreslerini geri dönüştürdüğü için her zaman bunu alıyorum. Benim için doğru soru :)

1
FWIW Bu cevabı aramaya devam ediyorum, çünkü LAN'ımda başlatma sırasında disk şifreleme şifresini girmek için bir dropbear (farklı bir ana bilgisayar anahtarına sahip) kullandığım bir sistemim var.
Zulan

1
@jww Bu, senaryonuz için yanlış soru / çözümdür. Bunun yerine, SSH'yi IP adresini yoksaymak, ancak yine de ana bilgisayar anahtarını kontrol etmek için yapılandırmanız gerekir. Buradaki
Jon Bentley

Yanıtlar:


56

Anlık ssh -o StrictHostKeyChecking=nodenetlemeyi kapatmak için kullanabilirsiniz known_hosts. Ancak buna karşı tavsiyelerde bulunabilirim. Ana bilgisayar anahtarının neden değiştiğini gerçekten kontrol etmelisiniz.

Diğer bir seçenek de, söz ~/.ssh/configkonusu ana bilgisayar için belirli bir giriş eklemek . Bu, her açılışta yeni ana bilgisayar anahtarları üreten belirli bir ana makineniz varsa ve günde birkaç kez geçerli bir neden için yeniden başlatıldığında geçerli bir yaklaşım olabilir.

Host <your problematic host>
  StrictHostKeyChecking no

bu beklenen bir davranıştır) yani normaldir (benim durumumda)
alexus

1
@alexus "Beklenen" ise, seçeneği olmasını istediğiniz belirli bir ana bilgisayar adına / IP'ye uygulayabilirsiniz.
chrylis

1
@alexus Ve bunu yaparsanız, ssh'nin sağladığı tüm korumayı kaybettiğinizden emin olun. Telnet kullanıyor olabilirsiniz, çünkü birisinin sizi MITM'e çekmesi ve tüm trafiğinizi yakalaması çok önemlidir.
Michael Hampton

1
Bu artık işe yaramıyor (en azından OpenSSH_5.3p1 için)
saat

-o StrictHostKeyChecking=nobir parola ile giriş yapma olanağını kaldırır. Bunun için bir bayrak bulunmaması, kullanıcının davranışı zorlamasını sağlamak için doğrudan unix ilkelerine aykırı değil mi? Şu anda yerel bir IP ile yerel bir makineye giriş yapmaya çalışıyorum. Ana makinenin anahtarı değişti çünkü makineyi yeniden biçimlendirdim. Buradaki her şey anlamlıdır ve hiçbir şey şartlar altında güvenlik riski değildir.
Wowfunhappy

31

Bilinen ana makinenizi POSIX ortamında tamamen yok saymak için, GlobalKnownHostsFileve UserKnownHostsFileseçeneklerini aşağıdaki gibi ayarlayın /dev/null:

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

StrictHostKeyChecking=noSeçeneğin ayarlanması bağlanmanıza izin verecektir ancak SSH yine de bir uyarı gösterecektir :

ssh -o StrictHostKeyChecking=no user@host

Diğerlerinin de belirttiği gibi, altta yatan sorunu ele almak muhtemelen daha iyidir. Örneğin, ana bilgisayarları doğrulamak için SSH sertifika doğrulamasını düşünebilirsiniz .


2
Bu, şu anda en yüksek olandan daha iyi bir cevap olabilir çünkü aksi takdirde devre dışı bırakılacak olan şifre kimlik doğrulamasını kullanmanıza izin verir (tabii ki şifrenizi yazmadan önce tam olarak ne yaptığınızı anlamalısınız ...)
VZ.

Biraz burada karıştı değilim: Eğer olmamalıdır da kullanmak -o StrictHostKeyChecking=no ilaveten-o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null seçenekleri - son bir cevap: ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host?
Gabriel Staples


5

Sunucuyu yeniden yüklediyseniz ve bu nedenle Kimlik değiştiyse, belirtilen 155 numaralı satırı silmeli /Users/alexus/.ssh/known_hostsve devam etmelisiniz .

Farklı özel ağlar arasında geçiş yaparsanız, ssh istemcisi ayrıca ana bilgisayar adına bağlı olarak anahtarları da kaydedeceğinden, bağlanmak için ana bilgisayar adlarını kullanmanız gerekir. Şuna bir şey ekle /etc/hosts:

10.52.11.171 server1
10.52.11.171 server2

ve sonra ssh server1alt ağ 1'e bağlandığında ve alt ağ ssh server22'ye bağlandığında kullanın. Bu şekilde, her iki sunucunun da farklı ana bilgisayar anahtarları olabilir.


İki özel ağ arasında geçiş yaparsanız ve iki IP'ye bağlanırsanız ne olur?
alexus

1
Cevabımı düzenledim.
etagenklo

2
@alexus O zaman IPv6'ya ihtiyacınız var :) Ama asıl sorunuzda faydalı bilgiler olurdu.
Michael Hampton

2

-o StrictHostKeyChecking=no yalnızca ana bilgisayar known_hosts dosyasında bulunmuyorsa çalışır.

Bence daha temiz (uyarı yok), ana bilgisayar anahtarının vm klonlama nedeniyle değişebileceğini düşünüyorsanız, bu tür ana bilgisayarları görmezden gelmeyi zorlamak:

# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
    ssh-keygen -R ${host_ip}
    echo ${host_key} >>  ~/.ssh/known_hosts
}

# connect as normal way
ssh root@${host_ip} "hostname"

2

Bazı insanlar bunun doğru olmadığını söylüyor, bunu ve benzeri şeyleri yapman gerekmiyor, ama birkaç gömülü cihazı tekrar tekrar test etmek için de buna ihtiyacım var. Devre dışı bırakmanız gerekir StrictHostKeyChecking=no, bu doğru, ancak bilinen ana makine dosyasını da sıfırlayın /dev/null. İşte autologin ve psuzak cihazda bir örnek .

sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host 'ps ax'

-2

Tüm sunucularınıza giriş yapın (ve RedHat ise) rm -f /etc/ssh/ssh_host_*ve ardından SSHD'yi yeniden başlatın.

Bu, göz ardı edilmesine gerek olmayan yeni SSH ana bilgisayar anahtarları yaratacaktır.

Birden fazla sunucuya klonlanan SSH anahtarlarının yalnızca istenmediği, aynı zamanda herhangi bir uyarı vermediği bir örneği düşünebilirim. Bir A kaydının katları. A kaydı olan tüm ana bilgisayarlar aynı anahtara sahip.


6
Bu cevap yanlış. Parmak izi istemcide yereldir.
89c3b1b8-b1ae-11e6-b842-48d705,
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.