ECDSA ana bilgisayar anahtarı ile ilgili uyarı nasıl düzeltilir?


287

Bir Ubuntu sunucusuyla şifresiz SSH'yi kurmaya çalışıyorum ssh-copy-id myuser@myserver, ancak hatayı alıyorum:

Uyarı: 'myserver' için ECDSA ana bilgisayar anahtarı, '192.168.1.123' IP adresinin anahtarından farklı

Buna neden olan nedir ve nasıl düzeltebilirim? .sshUzak makinedeki dizini silmeyi ve ssh-keygen -R "myserver"yerel olarak çalışmayı denedim , ancak bu hatayı çözmedi.


benim durumumda, sunucu (ip) etki alanı ile bağ sonra değiştiririm The ECDSA host key for server has changed. Benim yöntemim alandaki ilgili önbellek dizgesini kaldırmak ~/.ssh/known_hosts. Sonra ssh çalışır.
Ninja

Yanıtlar:


415

192.168.1.123Yerel makinede önbellek anahtarını çıkarın :

ssh-keygen -R 192.168.1.123

14
Benim için işe yaramadı evden SSHing girerken işte Debian sunucusu iş başında. Ayrıca, cevap oldukça kısa.
Chris K,

/home/wf/.ssh/known_hosts güncellendi. /Home/wf/.ssh/known_hosts.old olarak tutulan orijinal içerik "Uyarı: 'xxxx' IP adresi için ECDSA ana bilgisayar anahtarını bilinen ana bilgisayar listesine kalıcı olarak ekledi." görüntülenir. ve sonra iş gibi görünüyor
Wolfgang Fahl

13
Kaldırmak yerine anahtarı güncelleyebilirsiniz. Bundan ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hostssonra, ana bilgisayara bağlanırken ilk önce yeni anahtarı doğrulamanız gerekmez.
Alex,

2
Çalışmayı başaramayanlar için: Aynı IP'nin birden çok oluşumunu kaydettim: 1 / söz konusu IP adresi (xx.xx.xx.xx), domain (tomsihap.fr), sağlayıcıya verilen vps sunucusu adres (vpsxxx.ovh.net). ssh-keygen -R bunların her biri için iş yaptı.
tomsihap

Benim için çalıştı, ancak bu komut hangi komuttan çalıştırılmalı? Cevap, hatayı gösteren cevaptan geldi. İkinci soru ve cevap daha açık, ancak sadece durumda: ssh-keygen -R'ye hangi adres geçmeli? Hata ifadesinde yer alan adres.
Russ Bateman

63

Benim durumumda ssh-keygen -R ...uyarı düzeltmedi. Bunun gibi ek bilgilerim vardı:

Offending key for IP in /home/myuser/.ssh/known_hosts:8
Matching host key in /home/myuser/.ssh/known_hosts:24

Basitçe el ile ~/.ssh/known_hosts8. satırı ("rahatsız edici anahtar") düzenledik ve sildim. Yeniden bağlanmayı denedim, ev sahibi kalıcı olarak eklendi ve bundan sonra her şey yolundaydı!


2
Tıkır tıkır çalışıyor. Tek bir satırda bunu düzeltebilir sed -e '8d' /home/myuser/.ssh/known_hosts, satır numarasını 8ve dosya adını sisteminizde görüntülenenlerle değiştirebiliriz.
Alex P. Miller,

Bu yaklaşımla ilgili sorunum, known_hosts:8sıfır indeksli bir değere atıfta bulunup bulunmadığı konusunda biraz kafa karıştırıcıydı . Bunun 1: 1 eşlemesi olduğunu bilmek güzel ...
Daniel F,

2022 gibi standart olmayan bir liman kullanırsanız bunun olduğunu fark ettim. Bu durumda yapmanız gerekenssh-keygen -R [hostname]:2022
Alexander Malfait

19

LAN bilgisayarlarım ve iki webhosting hesabım arasında çok fazla şey yapıyorum, bu yüzden herşeyi sıraladım ve ssh -vnerede ve neyin yanlış gittiğini görmek için kullanılan kimlik doğrulama sorunları da dahil olmak üzere SSH ile bitti .

Bu sorunu yeni çözdüm ve cevaplardan memnun olmadığım için kendimi gerçekten "neden" olarak bilmek istedim ...

Benim durumumun tetikleyicisi şudur: işte yeni sunucu işletim sistemi kuruldu ve openssh-server paketi yüklendikten sonra, iş sunucusunda yeni bir ana bilgisayar anahtarı seti üretildi. Önceden, tüm sunucu işletim sistemim Ubuntu idi ve bu sefer Debian olarak değişti (ve izinlerde farklı bir fark olduğundan şüpheleniyorum).

Tüm işletim sistemleri Ubuntu olduğunda ve bir sunucunun işletim sistemini yeniden kurduğumda, ilk SSH'ye girdiğimde, yukarıdaki sessiz uyarı yerine tercih ettiğim bu tür bir uyarı alırım!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
06:ea:f1:f8:db:75:5c:0c:af:15:d7:99:2d:ef:08:2a.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:4
RSA host key for domain.com has changed and you have requested strict checking.
Host key verification failed.

Sonra ~/.ssh/known_hostsssh'yi başlatan bilgisayarda açıyorum , bu satırı sil, yeniden bağlan ve bu olur:

chris@home ~ $ ssh work
The authenticity of host '[work]:11122 ([99.85.243.208]:11122)' can't be established.
ECDSA key fingerprint is 56:6d:13:be:fe:a0:29:ca:53:da:23:d6:1d:36:dd:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[work]:11122 ([99.85.243.208]:11122)' (ECDSA) to the list of known hosts.
Linux rock 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64

Bit bitmesi: 11122, SSH'yi güvenlik duvarından yönlendirdiğim port numarası.

Eski bir Ubuntu sunucusundaki yedeklemeleri kontrol ettim ve yeni Debian kurulumuma göre farklı oldum:

Ubuntu:                                            Debian:
# Package generated configuration file             # Package generated configuration file
# See the sshd(8) manpage for details              # See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for      # What ports, IPs and protocols we listen for
Port 22                                            Port 22
# Use these options to restrict which interface    # Use these options to restrict which interfaces
#ListenAddress ::                                  #ListenAddress ::
#ListenAddress 0.0.0.0                             #ListenAddress 0.0.0.0
Protocol 2                                         Protocol 2
# HostKeys for protocol version 2                  # HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key                  HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key                  HostKey /etc/ssh/ssh_host_dsa_key
------------------------------------------------   HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security    #Privilege Separation is turned on for security
UsePrivilegeSeparation yes                         UsePrivilegeSeparation yes

Evet, büyük olasılıkla, ev sahibi son zamanlarda ecdsa anahtarlarını kullanmaya başladı, ki Ubuntu'nun son zamanlarda yaptığı değişikliklere dayanarak bir güncelleme yapmakla suçlanacağım. Ubuntu'nun güvendiğim çok güçlü Linux işletim sisteminden uzaklaşması, bu sefer Debian'ı kurmamın nedeni.

Ecdsa'da bir security.SE q / a okudum ve bu satırı sshd_configyeni Debian sunucumdan zaten kaldırdım . (ve koştu service ssh restart)


2
Güzel yan yana karşılaştırma bloğu için +1. "Ubuntu'nun sağlam Linux işletim sisteminden uzaklaşması" anlamına gelen net bir URL ekleyebilir misiniz?
bgoodr

@bgoodr benim fikrim ve yalnızca son birkaç yılda birkaç kez kendi RAID dosya sunucumu kurmaya dayanıyor. : / Cevap için crap, ama googling başlar ubuntu debian serverve ne demek istediğimi göreceksiniz.
Chris K

1
@ChrisK Siz, efendim, patronsunuz. Kısa ama özlü cevap için teşekkürler.
sargas

6

Bilgi istemi her zaman gerçekleşir çünkü IP adresleri dinamik adresleme kullanılırken her zaman değişir. Statik IP kullanmayı deneyin, böylece anahtarı yalnızca bir kez eklemeniz gerekir.


1
İyi bir nokta, birinin dinamik ips dediği yeri özledim mi?
Chris K,

6

ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.123

Bu, known_hosts.old altındaki mevcut anahtarları değiştirmeli ve yeni bir tane oluşturmalıdır. Bu çözüm aynı senaryoda benim için çalıştı.


3

Aşağıdaki satırları ~ / .ssh / config dosyasına ekledim, böylece tüm .local adreslerini katı ana bilgisayar denetlemesini devre dışı bıraktım. (DHCP adres tahsisi ile yerel makinelerimin ip adresleri sürekli değişiyor)

host *.local
    StrictHostKeyChecking no

Yine de benim için uygun olan uyarıyı hala alıyorsunuz.


2

Bağlanmak için aynı kullanıcıyı mı kullanıyorsunuz?

John kullanıcısı gibi yerel bir PC’ye giriş yapmış ve Adolf @ B kullanıcısı gibi B sunucusuna bağlıysanız ve her şey tamamsa, Jane kullanıcısı gibi yerel PC’ye giriş yaptıysanız ve sunucuya bağlanıyorsanız, bu her şeyin tamam olduğu anlamına gelmez. B kullanıcı gibi Adolf @ B .

PC kullanıcı Beda gibi sunucu B giriş isterseniz A şifre olmadan, tüm PC den, bu komutu deneyin A :

ssh-keygen -t rsa

Bu komut anahtarı oluşturur ve anahtarı dosyada saklar. Lütfen şifreyi boş bırakın .

ssh Beda@B mkdir -p .ssh

Bu komut, zaten mevcut değilse, dizini oluşturur. Aksi takdirde, bir hata mesajı yazdırmayın.

cd ~/.ssh

Bu komut, dizini kullanıcılarınızın giriş dizinine değiştirir.

cat id_rsa.pub | ssh Beda@B 'cat >> .ssh/authorized_keys'

Bu komut dosyası yazdırır id_rsa.pub içine (genel anahtar) authorized_key'lerine sunucuda.

ÖNEMLİ: Beda, bağlandığınız sunucudaki kullanıcı adınız, B ise sunucu IP'nizdir.

Şimdi, B sunucusuna bir parola veya parola olmadan bağlanabilirsiniz:

ssh Beda@B

1
Veya ssh-copy-id komutunu, bir ekstra_düze dosyası olmadan id_rsa.pub anahtarınızla bir yetkili_ anahtar dosyası doldurmak için kullanın.
BlakBat

1

İplik burada yardımcı olabilir.

Temel olarak, o ana makinenin hem RSA hem de ECDSA anahtarlarını kaldırmak istiyorsunuz, ardından ssh-keyscanonları known_hostsbu çakışmaya neden olmayacak şekilde yeniden dosyaya koymak için kullanın . Aynı sorunu yaşadığımda benim için çalıştı.


1

Soru: Buna ne sebep oldu?

Böylece ssh sunucusu ana bilgisayar anahtarı değişti. Değişime ne sebep oldu? Söylemesi zor. İşte bazı tahminler:

  • MyServer'daki sshd, ECDSA anahtarlarını kullanmaya başladı mı, yani yeni bir anahtar türü mü?
  • MyServer yakın zamanda yeniden kuruldu mu?
  • MyServer'daki sshd kısa süre önce yeniden çağrıldı ve yeni bir ssh ana bilgisayar anahtarı oluşturuldu mu?
  • Birisi sshd ana bilgisayar anahtarını yeniden oluşturdu mu veya değiştirdi mi?
  • Myserver'ın IP adresi değişti mi, böylece farklı bir ana bilgisayar bu IP adresine cevap verecek mi?

Soru: ... ve nasıl düzeltebilirim?

Diğerlerinin yanıtları gibi, hesabınızın önbelleğe aldığı myserver için önbelleğe alınmış ECDSA ana bilgisayar anahtarını kaldırın.


2
İyi tavsiye, ama aslında soruyu cevaplamıyor. Soruyu cevaplamak için YTL bile yok.
boatcoder

1

Bu hata beni uzun süre rahatsız etti. Bir nedenden ötürü yapıp yapmamamın bir önemi vardı

ssh host

veya

ssh host.domain

https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh

daha sonra beni config dosyasını değiştirme seçeneğine işaret etti. İşlemi otomatikleştirmek için orada bulunan https://askubuntu.com/a/949731/129227 betiğime bakın .


1
Yapılandırma değerlerini kullanmak CanonicalizeHostnameve CanonicalDomainskatı denetimleri kaldırmaktan kaçınır ve ssh, host ve host.domain öğelerinin aynı olduğunu düşünür.
BlakBat

0

Bunu Chromebook'ta Secure Shell'i kaldırıp yeniden yükleyerek düzelttim ... Bir cazibe gibi çalıştı.


Bu overkill. Cevabımdaki daha basit bir çözümü burada görün.
Alex Yursha

0

known_hostsChrome OS'de bilinen bir ana bilgisayar parmak izinin ( dosyadan) nasıl kaldırılacağı aşağıda açıklanmaktadır :

Bağlantı başarısız olduğunda ssh çıktısında rahatsız edici ana bilgisayar girişinin dizinini bulun. Örneğin aşağıdaki satırda suçlu endeksi 7'dir :

Offending ECDSA key in /.ssh/known_hosts:7

Secure Shell penceresinin JavaScript konsolunu ( CTRL+ Shift+ J) açın ve INDEXuygun değeri (örneğin 7 ) değiştirerek aşağıdakileri yazın :

term_.command.removeKnownHostByIndex(INDEX);

Bu çözüm Leo Gaggl'ın Blog'undan ödünç alındı .

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.