wake-up-neo.com

ssh remote Hostidentifikation hat sich geändert

Ich habe meinen Server neu installiert und erhalte folgende Nachrichten: 

[[email protected] ~]$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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.

Ich habe verschiedene Lösungen ausprobiert, die ich im Internet gefunden habe. Meine known_hosts-Datei (normalerweise in ~/.ssh/known_hosts) befindet sich in /var/lib/sss/pubconf/known_hosts. Ich habe versucht, es zu bearbeiten, aber es bleibt in einem Zustand. Ich habe ipa-client installiert und habe Fedora 19. Wie löse ich diese Warnung?

Alle Antworten, die bis jetzt beantwortet wurden, funktionieren nur, wenn Freeipa nicht installiert ist.

Richtige Antwort für Freeipa in Kommentaren unten von Adrin hier .

469

Hier ist die einfachste Lösung 

ssh-keygen -R <Host>

Zum Beispiel,

ssh-keygen -R 192.168.3.10

Von ssh-keygen manpage :

  • -R hostname Entfernt alle Schlüssel, die zu hostname gehören, aus einer known_hosts-Datei. Diese Option ist nützlich, um Hash-Hosts zu löschen (siehe Option -H oben).
879
Kashif Nazar

benutzen

ssh-keygen -R hostname

Ein Beispiel mit einer IP-Adresse/einem Hostnamen wäre:

ssh-keygen -R 168.9.9.2

Dadurch wird das beleidigende Verhalten Ihres Hosts von den known_hosts aktualisiert

166
ravi ranjan

Ich hatte den gleichen Fehler, nachdem ich ein Digital Ocean Ubuntu-Image erstellt hatte. Ich habe den folgenden Befehl mit meiner Server-IP anstelle von [IP_ADDRESS] verwendet.

ssh-keygen -R [IP_ADDRESS]
102
Ben

Wenn Sie den Server neu installieren, ändert sich seine Identität und Sie erhalten diese Meldung. Ssh hat keine Möglichkeit zu wissen, ob Sie den Server geändert haben, mit dem er verbunden ist, oder ein Server im Mittelfeld wurde zu Ihrem Netzwerk hinzugefügt, um alle Ihre Kommunikation zu erfassen.

Entfernen Sie einfach den Schlüssel aus known_hosts, indem Sie den entsprechenden Eintrag löschen:

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

Der 4d ist auf dem Konto von Offending RSA ...known_hosts:4

33
mockinterface

Der Vorschlaghammer ist, alle bekannten Hosts auf einen Schlag zu entfernen:

rm ~/.ssh/known_hosts

Ich stelle mich dem entgegen, da wir kleine Subnetze kurzlebiger Server aus einer Sprungbox verwenden und häufig interne IP-Adresswiederverwendung von Servern haben, die denselben ssh-Schlüssel verwenden.

29
Andy Hayden

Das Problem ist, dass Sie zuvor eine SSH-Verbindung zu einem Remote-Computer angenommen haben und der digitale Fingerabdruck oder SHA256-Hash-Schlüssel des Remote-Computers sich seit der letzten Verbindung geändert hat. Wenn Sie also erneut versuchen, SSH zu verwenden oder github verwenden, um Code zu ziehen, der auch SSH verwendet, wird ein Fehler angezeigt. Warum? Sie verwenden dieselbe Remote-Computeradresse wie zuvor, der Remote-Computer reagiert jedoch mit einem anderen Fingerabdruck. Daher kann es vorkommen, dass jemand den Computer spoofet, an den Sie zuvor eine Verbindung hergestellt haben. Dies ist eine Sicherheitslücke. 

Wenn Sie zu 100% sicher sind, dass der Remote-Computer nicht gefährdet, gehackt, gefälscht usw. wird, müssen Sie nur den Eintrag in Ihrer known_hosts-Datei für den Remote-Computer löschen. Dadurch wird das Problem gelöst, da beim Verbinden mit den SHA256-Fingerabdruck-IDs keine Übereinstimmung mehr besteht.

Auf dem Mac habe ich Folgendes getan:

1) Suchen Sie die Ausgabezeile, die RSA Host key for servername:port has changed and you have requested strict checking. liest. Sie benötigen sowohl den Servernamen als auch den potenziellen Port dieser Protokollausgabe.

2) Sichern Sie die SSH-Datei mit den bekannten Hosts cp /Users/yourmacusername/.ssh/known_hosts /Users/yourmacusername/.ssh/known_hosts.bak.

3) Suchen Sie die Zeile, in der der alte Fingerabdruck des Computers gespeichert ist, und löschen Sie ihn. Sie können den Fingerabdruck des betreffenden Computers mit dem Servernamen und dem Port in Schritt 1 suchen. nano /Users/yourmacusername/.ssh/known_hosts

4) STRG-X zum Beenden und Auswahl von J zum Speichern der Änderungen

Geben Sie nun ssh -p port servername ein und Sie erhalten die ursprüngliche Eingabeaufforderung, die Sie beim ersten SSH-Versuch an diesen Computer vorgenommen haben. Sie haben dann die Möglichkeit, den aktualisierten SHA256-Fingerabdruck dieses Remote-Computers in Ihrer known_hosts-Datei zu speichern. Wenn Sie SSH über Port 22 verwenden, ist das Argument -p nicht erforderlich.

Bei Problemen können Sie die ursprüngliche known_hosts-Datei wiederherstellen: cp /Users/yourmacusername/.ssh/known_hosts.bak /Users/yourmacusername/.ssh/known_hosts

22
anon58192932

Wie viele schon gesagt haben, verwenden Sie ssh-keygen, d. H.

ssh-keygen -R pong

Sie können auch die Host-Schlüsselüberprüfung vorübergehend deaktivieren:

ssh -oStrictHostKeyChecking=no [email protected]
12
Stephen Quan

Ich habe die Lösung von mockinterface verwendet, obwohl der sed -i nicht ganz funktioniert hat.

Sudo vim /var/lib/sss/pubconf/known_hosts

Sie können jeden anderen Texteditor verwenden, den Sie möchten, aber wahrscheinlich müssen Sie Ihre Administratorrechte anzeigen

11
3nrique0

Funktioniert bei mir!

Fehler: Beleidiger RSA-Schlüssel in/var/lib/sss/pubconf/known_hosts: 4

Dies weist darauf hin, dass Sie einen fehlerhaften RSA-Schlüssel in Zeile Nr. Haben. 4

Lösung 1 :

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

2. remove line no: 4.

3. Save and Exit, and Retry.

Lösung 2:

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

ODER

Lösung 3:

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

Dadurch wird die 4th-Zeile von /root/.ssh/known_hosts entfernt (-i).

11
Sahil Gulati

Dies liegt daran, dass sich die Einstellungen Ihres Remote-Computers geändert haben. Entfernen Sie dafür Ihre aktuellen Schlüssel.

vim /root/.ssh/known_hosts 

Löschen Sie die Zeile der IP, die Sie verbinden.

7
miota85

Die anderen Antworten hier sind gut und funktionieren, jedenfalls habe ich das Problem gelöst, indem ich ~/.ssh/known_hosts löschte. Dies löst sicherlich das Problem, ist aber wahrscheinlich nicht der beste Ansatz.

4
tjespe

Entfernen Sie den Eintrag aus known_hosts mit:

ssh-keygen -R *ip_address_or_hostname*

Dadurch wird die problematische IP-Adresse oder der Hostname aus der Datei known_hosts entfernt und es wird erneut versucht, eine Verbindung herzustellen.

Aus den Manpages:

-R hostname
Entfernt alle Schlüssel, die zu hostname gehören, aus einer known_hosts-Datei. Diese Option ist nützlich, um gehashte Hosts zu löschen (siehe Option -H Oben).

4

In meinem Fall passierte es, weil ich zuvor eine SSH-Verbindung mit einer Maschine mit derselben IP hatte (zB 192.152.51.10) und das System den RSA-Schlüssel (gespeichert in /home/user_name/.ssh/known_hosts) der vorheriger Host, der zu Unstimmigkeiten führte.

Um beheben dieses Problem müssen Sie zuvor gespeicherten RSA-Schlüssel für die IP-Adresse 192.152.51.10 entfernen.

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

Für Mac-Benutzer können Sie das Flag -R des Befehls ssh-keygen verwenden. Schnelles Beispiel:

ssh-keygen -R THE_IP_ADDRESS

THE_IP_ADDRESS ist die IP-Adresse, mit der Sie versuchen, eine SSH-Verbindung herzustellen. Und dann kannst du gut verbinden.

3
Nick Rameau

Wenn Sie versuchen, eine Verbindung zum laufenden Docker-Container auf Port 2222 mit dem Befehl herzustellen, wird der Fehler angezeigt

[email protected]~$ ssh [email protected] -p 2222

Um dieses Problem zu lösen, gehen Sie auf Ihrem lokalen Computer (d. H. Host-Computer nicht Container) zu cd ~/.ssh/ und öffnen Sie die known_hosts-Datei mit dem Texteditor. Entfernen Sie die Zeile, die mit [localhost]:2222 beginnt, und speichern Sie die Datei. Versuchen Sie jetzt erneut, ssh 

[email protected]~$ ssh [email protected] -p 2222

Der Fehler wird ausgeblendet, muss jedoch bei jedem Neustart des Containers ausgeführt werden.

2

Nur clientseitiges Problem (doppelter Schlüssel für ip):

Varianten lösen:

Für eine eindeutige IP-Adresse (Standardport 22):

ssh-keygen -f -R 7.7.7.7

Für eine IP ( nicht Standard Port):

ssh-keygen -f -R 7.7.7.7:333

Schnell alle Ips löschen:

cd ~; rm .ssh/known_hosts

7.7.7.7 - ssh Ihre Server-IP-Verbindung

333 - Nicht-Standard-Port

2
Fortran

Eine sehr einfache Lösung: Bearbeiten Sie /home/hostname /.ssh/known_hosts, löschen Sie die 4-Zeile und speichern Sie sie. Wenn Sie ssh [email protected] erneut ausführen, wird die folgende Meldung angezeigt: Are you sure you want to continue connecting (yes/no)? yes, drucken Sie einfach yes.

Das funktioniert für mich.

Übrigens: Wenn Sie ein Problem haben, lesen Sie zuerst die Hinweise, es hilft.

2
Bluce Liu

Manchmal, wenn Sie aus irgendeinem Grund einen Server neu installieren müssen, werden wir beim Herstellen einer Verbindung über ssh feststellen, dass der Server die Identifikation geändert hat .. Wenn wir wissen, dass es sich hierbei um einen keinen Angriff handelt, so ist dies doch Wir haben das System wiederhergestellt, wir können die alte Identifikation mit ssh-keygen aus den known_hosts entfernen:

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

Beim erneuten Verbinden werden Sie aufgefordert, den neuen Fingerabdruck zu bestätigen:

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
BrennQuin

Ich hatte den gleichen Fehler in meinem Rechner und lösche die authorized_keys- und known_hosts-Datei.

1
GoingMyWay

Meine Lösung ist:

  1. vi ~/.ssh/known_hosts
  2. löschen Sie die Zeile mit der gewünschten IP-Adresse.

Dies ist besser, als den gesamten known_hosts zu löschen.

1
aircraft

Ich hatte dieses Problem, und der Grund ist sehr einfach. Ich habe eine doppelte IP-Adresse für die Anmeldung mit ssh. Nach Änderung dieses Problems ist alles gelöst.

1
Fan

Verwenden Sie diesen Befehl:

truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts
1
Muktesh Kumar

Mach einfach:

cd /home/user/.ssh/ -> hier ist user Ihr Benutzername, d. h. /home/jon/

Dann 

gedit known_hosts & und lösche den Inhalt. 

Jetzt ssh sollte es wieder funktionieren. 

0
ThePredator

Meine Lösung für UBUNTU (Linux):

1. Sie müssen den Inhalt aus der Datei "known_hosts" löschen, die sich in "/home/YOUR_USERNAME/.ssh/known_hosts" befindet. 

2.Erstellen Sie einen neuen SSH-Schlüssel wie "ssh-keygen -t rsa -C", [email protected] "-b 4096"

3.Kopieren Sie den neuen SSH-Schlüssel in Ihr Git-Repository (in meinem Fall Gitlab) SSH-Schlüssel.

Für mich geht das !

0
Dionis Oros

LÖSUNG:

1- Löschen Sie aus "$ HOME/.ssh/known_hosts" die Zeile, die sich auf den Host bezieht, zu dem keine Verbindung hergestellt werden kann.

2- Führen Sie diesen Befehl aus: ssh-keygen -R "IP_ADDRESSorHOSTNAME" (ersetzen Sie "IP_ADDRESSorHOSTNAME" durch Ihre Ziel-IP oder den Ziel-Hostnamen).

3- Wiederholen Sie die SSH-Verbindung (falls dies fehlschlägt, überprüfen Sie die Berechtigung für das .ssh-Verzeichnis, muss es 700 sein) 

0
DarkSkieS