ssh uzak ana bilgisayar kimliği değişti


619

Sunucumu yeniden yükledim ve şu iletileri alıyorum:

[user@hostname ~]$ ssh root@pong
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
6e:45:f9:a8:af:38:3d:a1:a5:c7:76:1d:02:f8:77:00.
Please contact your system administrator.
Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA host key for pong has changed and you have requested strict checking.
Host key verification failed.

İnternette bulduğum çeşitli çözümleri denedim. Dosyam known_hosts(normalde içinde ~/.ssh/known_hosts) var /var/lib/sss/pubconf/known_hosts. Düzenlemeye çalıştım, ama bir durumda kalıyor. İpa-istemcisini kurdum ve Fedora 19'um var. Bu uyarıyı nasıl çözebilirim?

Şimdiye kadar cevaplanan tüm cevaplar sadece Freeipa kurulu değilse çalışır.

Aşağıdaki adrin yorumlarında freeipa için doğru cevap burada .


1
sadece ip adresi çakışması nslookup bu sorunu daha fazla hata ayıklamak için ip varsa bu sorunun olabileceğini zor yoldan öğrendim
sharrajesh

1
Burada bir kilitlenme var. Kimse cevap ekleyemez ve bağlantı verdiği kişi konu dışı olarak işaretlenir, böylece kimse de cevap ekleyemez. Bilinen_anahtarları silerseniz sorunu da düzeltir.
zar

1
Ben de aynı problemi yaşadım. Benim ve diğerleri uğruna, işte soru ve cevabım: superuser.com/questions/1071204/…
adrin

3
Önce anahtarını doğrulamak isteyen biri olarak bu cevabı faydalı buldum. askubuntu.com/a/83499/620623
Declan McKenna

Sharrajesh'in belirttiği gibi: DNS girişlerinizi kontrol edin (benim için FreeIPA'da) ve ağa erişilemeyen IP'lere sahip birden fazla A girişiniz olmadığını görün.
th3penguinwhisperer

Yanıtlar:


1071

İşte en basit çözüm

ssh-keygen -R <host>

Örneğin,

ssh-keygen -R 192.168.3.10

Gönderen ssh-keygenadam sayfası :

  • -R hostnameBilinen_hosts dosyasından ana makine adına ait tüm anahtarları kaldırır. Bu seçenek, karma ana bilgisayarları silmek için kullanışlıdır (yukarıdaki -H seçeneğine bakın).

Windows ve bu çözümdeyim, anahtarın kaldırılması da işe yaramıyor, başka ne deneyebilirim?
jaycode

5
Pekala, Windows'ta çıkıyor Bunun için git bash'tan terminal kullanmam gerekiyor (veya herhangi bir MingW32 terminali). Zor.
jaycode

25
belirli bir bağlantı noktası üzerinden bağlanırsanız, sözdizimi ile kaldırmanız gerekebileceğini unutmayın ssh-keygen -R [127.0.0.1]:3022. Açıkça söylediği şey için .ssh / known_hosts dosyanızı kontrol etmeniz yeterlidir.
Adam Johns

4
Bunu denediğimde "<hostname> bulunamadı ~ / .ssh / known_hosts"
Nodeocrat

3
Bu uyarı neden oluşuyor?
Vilas Joshi

199

kullanım

ssh-keygen -R [hostname]

Bir ip adresi / ana bilgisayar adı içeren örnek:

ssh-keygen -R 168.9.9.2

Bu, barındırıcınızın bilinen_anahtarlardan rahatsız edilmesini güncelleyecektir. Bilinen_host'ların yolunu -f bayrağıyla da sağlayabilirsiniz.


1
Karşılık gelen anahtarı kaldırma $ ssh-keygen -R {server.name.com}| $ ssh-keygen -R {ssh.server.ip.address}| $ ssh-keygen -R server.example.com
DaddyMoe

5
Açıklama yapmadan bir cevap nasıl bu kadar çok oy alır .. güvenlik endişesi yok, açıklama yok .... -1
Daniel W.

4
Aynı zamanda aşağıdaki diğer cevabın bir kopyası gibi görünüyor. Lütfen bir mod bu karışıklığı temizlemek ...
Daniel W.

115

Aynı hatayı Digital Ocean Ubuntu görüntüsünü yeniden oluşturduktan sonra da yaşadım. Aşağıdaki komutu sunucu IP adresim yerine kullandım[IP_ADDRESS]

ssh-keygen -R [IP_ADDRESS]

Çok teşekkür ederim! Ana bilgisayar adını kullanıyordum ve sadece IP_ADDRESS ile çalıştı :)
J. Lopes

1
Bu benim için yaptı ve kabul edilen cevap olmalı. Bu cevabın neden daha sonra gelen iki kopyası olduğunu bilmiyorum ve her ikisinde de daha fazla oy var.
Wylliam Judd

Sizinki de aynı hata değildi; sunucunuz SSSD çalıştırmıyordu. OP'ye bakınız.
Mercury00

39

Sunucuyu yeniden yüklediğinizde kimliği değişir ve bu iletiyi almaya başlarsınız. Ssh, bağlandığı sunucuyu değiştirip değiştirmediğinizi bilmiyor ya da tüm iletişimlerinizi koklamak için ağınıza ortadaki bir sunucu eklenmiş olup olmadığını bilmenin bir yolu yok - bu yüzden bunu dikkatinize çekiyor.

İlgili girişi silerek anahtarı bilinen_anahtarlardan kaldırmanız yeterlidir:

sed '4d' -i /var/lib/sss/pubconf/known_hosts

4dYüzünden olduğuOffending RSA ...known_hosts:4


1
Teşekkürler, ama nedenini bilmiyorum, ama kaldırıyorum ve yine içinde. Sssd hizmetini durdurmaya çalıştım ve bu etki gitti, ancak sssd'yi başlattıktan sonra tekrar görünüyor.
Filip Dobrovolný

~ / .Ssh dizininizi yedekleyin ve silin. Hizmetiniz ~ / .ssh uçurulduktan sonra anahtarları yeniden eklemeye devam ediyor mu?
mockinterface

.Ssh adını .ssh_old olarak değiştirdim, yeni bağlanmayı denedikten sonra boş bir dizin oluşturun .ssh. Ve hala / var / lib / sss / pubconf / bilinen_hosts'u "düzenlenebilir" yapamıyorum.
Filip Dobrovolný

4
Bunu yapmanın daha taşınabilir yolu: sed -i -e 4d /var/lib/sss/pubconf/known_hosts
Pierz

2
identificationBu hata mesajı gibi kesintilere neden olmadan sunucuyu yeniden oluşturmak istediğinizde sunucuyu nasıl yedeklersiniz ?
Ninjaxor

38

Balyoz, bilinen her konağın düştüğü tek seferde kaldırılmasıdır:

rm ~/.ssh/known_hosts

Bir atlama kutusundan kısa ömürlü sunucuların küçük alt ağlarını kullandığımız ve genellikle aynı ssh anahtarını paylaşan sunucuların dahili IP adresi yeniden kullanımına sahip olduğumuz için buna karşı geliyorum.


Kabul edilen cevap işe yaramadığında benim için kötü bir sanal makine üzerinde çalıştı.
100pic

1
Kemere sahip olmak için kullanışlı bir araç, ancak bu sizi bir MitM saldırısına açabilir ( known_hostsönlenmesi gereken kesin şey ). Eğer eminiz Yalnızca bunu tüm güvenli vardır ana bölgesi.
Freedom_Ben

26

Sorun, daha önce bir uzak bilgisayara SSH bağlantısını kabul etmiş olmanız ve uzak bilgisayarın dijital parmak izi veya SHA256 karma anahtarının en son bağlandığınızdan beri değişmiş olmasıdır. Böylece SSH'yi tekrar denediğinizde veya SSH kullanan kodu çekmek için github kullandığınızda bir hata alırsınız. Neden? Çünkü önceki bilgisayarla aynı uzak bilgisayar adresini kullanıyorsunuz ancak uzak bilgisayar farklı bir parmak iziyle yanıt veriyor. Bu nedenle, daha önce bağlandığınız bilgisayarı birisi taklit ediyor olabilir. Bu bir güvenlik sorunudur.

Uzak bilgisayarın güvenliğinin bozulmadığından, saldırıya uğradığından, aldatıldığından vb.% 100 eminseniz, uzak bilgisayar için bilinen_hosts dosyanızdaki girişi silmektir. Bağlanırken artık SHA256 parmak izi kimlikleriyle uyumsuzluk olmayacağı için bu sorunu çözecektir.

Mac'te yaptığım şey:

1) Okunan çıktı satırını bulun RSA host key for servername:port has changed and you have requested strict checking.Bu günlük çıktısından hem sunucuadı hem de potansiyel olarak bağlantı noktasına ihtiyacınız olacaktır.

2) Bilinen SSH ana bilgisayarları dosyasını yedekleyin cp /Users/yourmacusername/.ssh/known_hosts /Users/yourmacusername/.ssh/known_hosts.bak

3) Bilgisayarın eski parmak izinin depolandığı satırı bulun ve silin. Adım 1'deki sunucu adını ve bağlantı noktasını kullanarak sorun teşkil eden uzak bilgisayar parmak izini arayabilirsiniz.nano /Users/yourmacusername/.ssh/known_hosts

4) Çıkmak için CTRL-X ve değişiklikleri kaydetmek için Y'yi seçin

Şimdi yazın ssh -p port servernameve SSH'yi o bilgisayara ilk kez denediğinizde yaptığınız orijinal istemi alacaksınız. Daha sonra bu uzak bilgisayarın güncellenmiş SHA256 parmak izini bilinen_hosts dosyanıza kaydetme seçeneği sunulur. Bağlantı noktası 22 üzerinden SSH kullanıyorsanız -p argümanı gerekli değildir.

Özgün bilinen_hosts dosyasını geri yükleyebileceğiniz sorunlar: cp /Users/yourmacusername/.ssh/known_hosts.bak /Users/yourmacusername/.ssh/known_hosts


3
Bu kabul edilmiş cevap olarak işaretlenmelidir. Bu adımları takip etmek benim ssh-keygen -R [IP_ADDRESS]için çalışmazken sorunumu çözdü . Teşekkürler!
Yusuf Kamil AK

Evet, adil olmayan bu davalardan biri, en iyi cevap. 2. ve 3. cevaplar ilkinin söylediklerini tekrarlar ve hepsinin tamamlanmamış bir çözümü vardır.
brasofilo

16

Birçoğunun söylediği gibi, kullanın ssh-keygen, yani

ssh-keygen -R pong

Ayrıca, ana bilgisayar anahtarı denetimini geçici olarak kapatmayı da düşünebilirsiniz:

ssh -oStrictHostKeyChecking=no root@pong

.ssh / config için ne kullanıyorum : Host ???? CheckHostIP no StrictHostKeyChecking no(2 satırdan başlayarak tablolanmış 3 satır)
XXL

15

Benim için çalışıyor!

Hata: / var / lib / sss / pubconf / known_hosts içinde RSA anahtarını ihlal: 4

Bu, no. Satırında rahatsız edici bir RSA anahtarınız olduğunu gösterir. 4

Çözüm 1 :

1. vi /var/lib/sss/pubconf/known_hosts

2. remove line no: 4 .

3. Save and Exit, and Retry .

Çözüm 2:

ssh-keygen -R "you server hostname or ip"

VEYA

Çözüm 3:

sed -i '4d' /root/.ssh/known_hosts

Bu, yerinde ( ) 4thsatırını kaldıracaktır ./root/.ssh/known_hosts-i


1
Bu, root'un .ssh bilinen_hosts dosyası için çalışır. SSSD tarafından yönetilen ve uzak bir sunucu tarafından doldurulan / var / lib / sss / pubconf / known_hosts için değil.
Mercury00

1
benim durumumda, bazı nedenlerden dolayı, bilinen_hosts * 2 * 'de sorun oldu. Bu adımları izlememe yardımcı oldum, teşekkürler @Sahil Gulati!
Lucas

11

Ben sahte arayüz çözümünü kullandım, ancak sed -i pek işe yaramadı, hatta vim ile çizgiyi silerek çözdüm:

sudo vim /var/lib/sss/pubconf/known_hosts

İstediğiniz diğer metin düzenleyicilerini kullanabilirsiniz, ancak büyük olasılıkla yönetici ayrıcalıklarınızı göstermeniz gerekir


1
Evet, bilinen IP dosyaları aynı IP kaydını silmek sorunu çözecektir.
nerede

Yeniden ssh denemeye giriş anında SSSD tarafından yeniden oluşturulur. sss pubconf known_hosts dosyasının yerel sunucu tarafından doldurulmuş bazı yerel depolar değil, yönetilen bir dosya olduğunu unutmayın.
Mercury00

9

Mac kullanıcıları için, komutun -Rbayrağını kullanabilirsiniz ssh-keygen. Hızlı örnek:

ssh-keygen -R THE_IP_ADDRESS

THE_IP_ADDRESSssh yapmaya çalıştığınız IP olmak. Ve sonra ince bağlayabilirsiniz.


8

Bunun nedeni, uzak bilgisayar ayarlarınızın değişmiş olmasıdır. Bunun için mevcut anahtarlarınızı kaldırın.

vim /root/.ssh/known_hosts

Bağlandığınız IP hattını silin.


7

Düzen /home/hostname /.ssh/known_hostsve 4 satırları silin ve kaydedin.

Sonra ssh root@pongtekrar çalıştırın , şöyle mesaj göreceksiniz: Are you sure you want to continue connecting (yes/no)? yessadece yazdırın yes.

Not: Eğer bir sorununuz varsa, önce ipuçlarını okuyun, yardımcı olacaktır.


Gerçekte neler olduğunu açıklayan en iyi cevap.
Prometheus

6

Buradaki diğer cevaplar iyi ve çalışıyor, her neyse, sorunu silerek çözdüm ~/.ssh/known_hosts. Bu kesinlikle sorunu çözer, ancak muhtemelen en iyi yaklaşım değildir.


6

Benim durumumda, daha önce aynı ip (örneğin 192.152.51.10) olan bir makine ile ssh bağlantım olduğu ve sistem, sonuçta önceki ana makinenin RSA anahtarını (/home/user_name/.ssh/known_hosts içinde saklandı) dikkate alması nedeniyle oldu. uyumsuzluk.

To gidermek bu sorunu, etmelisin ip 192.152.51.10 için önceden saklanmış RSA anahtarını kaldırın .

ssh-keygen -f "/home/user_name/.ssh/known_hosts" -R 192.152.51.10

5

Mac'te test edilen basit tek katmanlı çözüm:

sed '/212.156.48.110/d' ~/.ssh/known_hosts > ~/.ssh/known_hosts

Bilinen ana bilgisayarlardan yalnızca hedef ssh ana bilgisayar IP'sini siler .

burada 212.156.48.110'un yerini hedef ana bilgisayar IP adresi alır.

Neden : Bağlantı noktası yönlendirme nedeniyle hedef IP farklı bir makine için zaten biliniyor olduğu için oldu. Bağlanmadan önce hedef IP'nin silinmesi sorunu çözecektir.


4

Bu komutu kullanın:

truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts

Lütfen komutun ne yaptığını ve ne yapmadığını açıklayın.
Daniel

6
Dosyayı neden kısaltmak istersiniz? Daha önce doğruladığınız bilgiler dahil olmak üzere tüm bilgileri kaybedersiniz. Tek bir değiştirilmiş genel ana bilgisayar anahtarına karşı davranmak için kötü bir yöntemdir.
Daniel

1
Bu tam bir hack: D ama işe yarıyor: D
Benjamin

İpucu: Bu ayrıca diğer tüm ana bilgisayar bilgilerini de siler. Makinenizden otomatik komut dosyaları çalıştırıyorsanız (dağıtımlar gibi), tüm ana bilgisayar anahtarlarını manuel olarak yeniden onaylamanız gerektiğinden bunlar bozulabilir. Buradaki en kolay çözümü kullanmak isteyen diğer kullanıcılara uyarı vermek için.
Mateng

3

Bunu kullanarak bilinen_hosts girdisini kaldırın:

ssh-keygen -R *ip_address_or_hostname*

Bu, sorunlu IP'yi veya ana bilgisayar adını bilinen_hosts dosyasından kaldıracak ve yeniden bağlanmaya çalışacaktır.

Man sayfalarından:

-R hostname
Bilinen_hosts dosyasından ana makine adına ait tüm anahtarları kaldırır. Bu seçenek, karma ana bilgisayarları silmek için kullanışlıdır (yukarıdaki -H seçeneğine bakın).


3

Sadece yap:

cd /home/user/.ssh/-> işte userkullanıcı adınız, /home/jon/örneğin.

Sonra

gedit known_hosts & ve içindeki içeriği silin.

Şimdi sshtekrar işe yaramalı.


3

2222 numaralı bağlantı noktasındaki çalışan docker kapsayıcısına komutla bağlanmaya çalışıyorsanız ve hatayı alıyorsanız

mian@tdowrick2~$ ssh pos@localhost -p 2222

Sonra bu sorunu çözmek için, yerel bilgisayarınızda (yani ana makine konteyner değil) gidin cd ~/.ssh/ve known_hostsmetin editörü ile dosyayı açın . İle başlayan satırı kaldırın ve [localhost]:2222dosyayı kaydedin. Şimdi tekrar ssh dene

mian@tdowrick2~$ ssh pos@localhost -p 2222

Hata kaybolacak, ancak kap her başlatıldığında bunu yapmanız gerekiyor.


2

Benim çözümüm:

  1. vi ~/.ssh/known_hosts
  2. istediğiniz bağlı ip'in bulunduğu satırı silin.

Bu, tüm known_hosts


Bu, aşağıdaki miota85 ile aynı cevaptır.
Daniel

2

Sadece istemci tarafı sorunu (ip için yinelenen anahtar):

Varyantları çözün:

Net bir ip için (varsayılan bağlantı noktası 22):

ssh-keygen -f -R 7.7.7.7

Bir ip için ( varsayılan olmayan bağlantı noktası):

ssh-keygen -f -R 7.7.7.7:333

Tüm ips'leri hızlı bir şekilde temizleyin:

cd ~; rm .ssh/known_hosts

7.7.7.7 - ssh sunucunuzun ip bağlantısı

333 - standart dışı liman


2

Bazen, herhangi bir nedenle, bir sunucuyu yeniden yüklemeniz gerekir, ssh ile bağlanırken, sunucunuzun kimliğin değiştiğini söylediğini görürüz. Bunun bir saldırı olmadığını , ancak sistemi eski haline getirdiğimizi biliyorsanız, ssh-keygen kullanarak eski kimliği bilinen_hostlardan kaldırabiliriz:

ssh-keygen -R <host/ip:hostname>
root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

Tekrar bağlanırken sizden yeni parmak izini doğrulamanızı isteyeceğiz:

ssh -l user <host/ip:hostname>
The authenticity of host '<host/ip:hostname>' can't 
be established.
RSA key fingerprint is 3f:3d:a0:bb:59:24:35:6d:e5:a0:1a:3f:9c:86:81:90.
Are you sure you want to continue connecting (yes/no)? yes

1

Bu sorun vardı ve nedeni çok basit, ssh giriş için yinelenen bir IP adresim var, bu yüzden bu sorunu değiştirdikten sonra, her şey çözüldü.


1

Makinemde aynı hatayla karşılaştım ve known_hostsdosyayı temizledim ve bundan sonra iyi çalışıyor.


1
Eğer silmek istemiyoruz authorized_keysile ilgili bir sorun olduğunda known_hostsdosyanın
jeb

0

ÇÖZÜM:

1- bağlanması imkansız olan ana bilgisayara atıfta bulunan hattı "$ HOME / .ssh / known_hosts" dan silin.

2- bu komutu yürütün: ssh-keygen -R "IP_ADDRESSorHOSTNAME" ("ip_ADDRESSorHOSTNAME" yerine hedef ip veya hedef ana makine adınızı yazın)

3- ssh bağlantısını yeniden deneyin (başarısız olursa lütfen .ssh dizinindeki izni kontrol edin, 700 olmalıdır)


0

UBUNTU (linux) üzerindeki çözümüm:

1. "/home/YOUR_USERNAME/.ssh/known_hosts" klasöründeki içeriği "bilinen_anahtarlar" dosyasından silmeniz gerekir

2. "ssh-keygen -t rsa -C" your.email@example.com "-b 4096" gibi yeni bir ssh anahtarı oluşturun.

3. ssh anahtarınızı git deponuza (benim durumumda gitlab) kopyalayın.

Benim için çalışıyor!


-1

AWS EC2.

Size verdiği mesajda ipi bulun.

Çalıştırmak

vim /home/ec2-user/.ssh/known_hosts

Mesajdaki ipi bulmak için ok tuşlarını kullanın ve Tamam'ı tıklatın.

dd

Bu, o satırı silecek ve ardından kaçış

:wp

Böylece kurtaracaksınız.

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.