SSH'nin bilinen_hosts dosyasından belirli bir ana bilgisayar anahtarını kaldırmak mümkün mü?

245

SSH'nin bilinen_hosts dosyasından belirli bir ana bilgisayar anahtarını kaldırmak mümkün mü?

Genellikle, genellikle known_hosts dosyasının tamamını silme işlemini bitiriyorum, ki bu benim yaptığım hiçbir sorunum yok, ama sadece meraktan dolayı, tek bir girişi silmek mümkün mü?

known_hosts dosyasını açtım, ancak içeriğini anlamaya çalışıyorum.

Aşağıda, karşılaştığım mesaj bu soruyu sormamı sağladı:

Add correct host key in /home/wissen16/.ssh/known_hosts to get rid of this message.
Offending key in /home/wissen16/.ssh/known_hosts:1
RSA host key for foo.com has changed and you have requested strict checking.
Host key verification failed.
    
sordu theTuxRacer 10.01.2011 06:56

6 cevap

419

Known_hosts girişlerini kaldırmak için bu komutu kullanın:

ssh-keygen -R hostname
    
verilen cevap Takkat 10.01.2011 08:43
28

Evet, yalnızca bir anahtarı kaldırabilirsiniz. Sadece bir editörde açın ve sorunlu satırı silin. Hata mesajındaki kolondan sonraki sayı, satır numarasıdır, yani bu, örnekte satır 1'i siler.

    
verilen cevap Mike Scott 10.01.2011 07:00
18

Yakın zamanda ana bilgisayar anahtarını kullanmaya başladım, ancak onlarla uğraştığımda genellikle satır başına bir anahtar olur, bu yüzden dosyayı yedekleyin ve doğru olanı buluncaya kadar bunları birer birer silin. Ardından diğerlerini tekrar ekleyin. Bunu yapmanın uzun bir yolu biraz, ama işe yaramalı.

Ayrıca, bu hatayı temel alarak, ve ne olduğuyla ilgili hiçbir fikre sahip olmaksızın, dosyadaki ilk ana bilgisayar anahtarı sorun olabilir, bu nedenle dosyayı vim ile açın

vim ~/.ssh/known_hosts

ve vur

dd

sonra kaydedin.

    
verilen cevap percent20 10.01.2011 07:01
3

ssh-keygen -R ana bilgisayar adını kullanmak her zaman işe yaramaz. SSH'nin daha yeni bir sürümüne sahipseniz, ssh-agent'ın ele geçirilmesini önlemek için ana bilgisayar adlarını "gizliyor", görünüşe göre ssh-keygen ana bilgisayar adını değiştiremez.

Örneğin, build-node-01 adında bir ana bilgisayarım var ve ona bağladım ve anahtarı kabul ettim. Sonra tekrar sıfırdan yeniden inşa ediyorum, yeni bir ana parmak izi alıyorum ve yeniden bağlamaya çalışıyorum, X hattında bir çatışma olduğunu belirten bir uyarı alacağım (3). % Co_de% çalıştırıyorum, ancak bir daha bağlanmaya çalıştığımda hala bir çakışma olduğuna dair bir uyarı alıyorum. Dosyayı yalnızca ana makine adının karma olduğunu ve okunabilir bir ana makine adı yerine ssh-keygen -R hostname olarak gösterildiğini keşfettim.

Bu durumda, kaldırılan saldırganı başarılı bir şekilde almanın tek yolu kullanmaktı

sed -i 'xd' ~/.ssh/known_hosts

Bu adımı bir adım ileriye almak için, yanlış satırı sildiğinizde, bilinen_host'ların bir yedeğini yapmak isteyebilirsiniz, bu durumda -i seçeneğine bir .bak (veya herhangi bir uzantı) eklemeniz yeterlidir. bu uzantı ile yedekleyin. Ssh-keygen kullanmak bunu otomatik olarak yapar.

sed -i.bak 'xd' ~/.ssh/known_hosts
    
verilen cevap dragon788 24.03.2015 23:24
1

Sadece yeni bulduğum temiz ve kolay bir cevabı paylaşmak için. Known_hosts dosyası karma olduğundan, hostname kaldırılıyor. Ancak, hata iletisindeki satır numarasına göre ana makine girişini el ile düzenleyebildim. Daha önce Mike Scott tarafından belirtildiği gibi, rahatsız edici hostname satır numarası hata mesajındadır.

Ya da bunu yapabilirim. Buradan: ssh known_hosts dosyasında hatalı anahtarın nasıl giderileceği

Bu biraz büyü aldım

sed -i 'xd' ~/.ssh/known_hosts

Satır numarasını ve x ile değiştirin. Ayrıca sed işe yaramazsa perl cevabı verir.

    
verilen cevap Corvus B 20.02.2014 01:37
0
sed '/10\.20\.120\.211/d' ~/.ssh/known_hosts > temp && mv temp ~/.ssh/known_hosts

Bu durumda, 10.20.120.211 benim bilinen_hosts dosyasından silmek istediğim ana bilgisayar, (.) gibi özel karakterlerden kaçtığınızdan emin olun

    
verilen cevap Shan Valleru 20.02.2014 02:32

Etiketlerdeki diğer soruları oku