webentwicklung-frage-antwort-db.com.de

So beheben Sie Warnungen zum ECDSA-Hostschlüssel

Ich versuche, passwortloses SSH auf einem Ubuntu-Server mit ssh-copy-id [email protected] einzurichten, erhalte aber den Fehler:

Warnung: Der ECDSA-Host-Schlüssel für "myserver" unterscheidet sich vom Schlüssel für die IP-Adresse "192.168.1.123".

Was ist die Ursache und wie behebe ich das? Ich habe versucht, das Verzeichnis .ssh auf dem Remotecomputer zu löschen und ssh-keygen -R "myserver" lokal auszuführen, aber dies behebt den Fehler nicht.

255
Cerin

Entfernen Sie den zwischengespeicherten Schlüssel für 192.168.1.123 auf dem lokalen Computer:

ssh-keygen -R 192.168.1.123
373
grawity

In meinem Fall hat ssh-keygen -R ... die Warnung nicht behoben. Ich hatte zusätzliche Informationen wie diese:

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

Ich habe einfach den ~/.ssh/known_hosts manuell bearbeitet und die Zeile 8 (den "beleidigenden Schlüssel") gelöscht. Ich habe versucht, die Verbindung wiederherzustellen, der Host wurde permanent hinzugefügt, und danach war alles in Ordnung!

54
aardvarkk

Ich arbeite viel zwischen meinen LAN-Computern und meinen beiden Webhosting-Konten. Daher habe ich alle möglichen Probleme mit SSH gelöst, einschließlich Authentifizierungsproblemen mit ssh -v, um festzustellen, wo und was schief gelaufen ist.

Nachdem ich dieses Problem gerade gelöst hatte und mit den Antworten nicht zufrieden war, wollte ich wirklich wissen, warum ich selbst ...

Der Auslöser für meinen Fall ist: Installiertes neues Server-Betriebssystem bei der Arbeit und nach der Installation von openssh-server package wurde ein neuer Satz von Host-Schlüsseln auf dem Server von work generiert. Zuvor waren alle meine Server-Betriebssysteme Ubuntu und dieses Mal wurde es auf Debian geändert (und ich vermute, dass es einen nuancierten Unterschied in den Berechtigungen gibt).

Wenn alle Betriebssysteme Ubuntu waren und ich das Betriebssystem eines Servers neu installiere, erhalte ich beim ersten SSH diese Art von Warnung, die ich der stillen Warnung oben vorziehe!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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.

Dann mache ich auf ~/.ssh/known_hosts Löschen Sie auf dem Computer, der das SSH initiiert, diese Zeile und stellen Sie die Verbindung wieder her.

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

Das bisschen über: 11122 ist die Portnummer, von der ich SSH auf der Firewall route

Ich habe die Backups von einem früheren Ubuntu-Server überprüft und mich von meiner neuen Debian-Installation unterschieden:

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

Also ja, wahrscheinlich hat der Host kürzlich angefangen, ecdsa-Schlüssel zu verwenden. Aufgrund der Änderungen von Ubuntu in letzter Zeit würde ich ein Update dafür verantwortlich machen. Ubuntus Abkehr von dem absolut soliden Linux-Betriebssystem, mit dem ich gerechnet habe, ist der Grund, warum ich dieses Mal Debian installiert habe.

Ich habe ein security.SE q/a auf ecdsa gelesen und diese Zeile bereits von sshd_config auf meinem neuen Debian-Server entfernt. (und lief service ssh restart)

17
Chris K

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

Dies sollte die vorhandenen Schlüssel unter known_hosts.old ersetzen und einen neuen erstellen. Diese Lösung hat bei mir im selben Szenario funktioniert

5
Jignesh Rawal

Die Eingabeaufforderung wird jedes Mal angezeigt, da sich die IP-Adressen bei Verwendung der dynamischen Adressierung ständig ändern. Versuchen Sie, eine statische IP-Adresse zu verwenden, damit Sie den Schlüssel nur einmal hinzufügen müssen.

4
Gaurav Joseph

Verwenden Sie denselben Benutzer für die Verbindung?

Wenn Sie an einem lokalen PC wie Benutzer John angemeldet und mit dem Server verbunden sindBwie Benutzer Adolf @ B und alles in Ordnung ist, bedeutet dies nicht, dass alles in Ordnung ist, wenn Sie sind wie Benutzer Jane am lokalen PC angemeldet und stellen eine Verbindung zum Server herBwie Benutzer Adolf @ B .

Wenn Sie sich von PCAaus als Benutzer Beda auf Server B anmelden möchten, versuchen Sie diesen Befehl, und zwar von PCAaus:

ssh-keygen -t rsa

Dieser Befehl generiert den Schlüssel und speichert ihn in der Datei. Bitte lassen Sie passphrase leer.

ssh [email protected] mkdir -p .ssh

Dieser Befehl erstellt das Verzeichnis, sofern es noch nicht vorhanden ist. Andernfalls drucken Sie keine Fehlermeldung.

cd ~/.ssh

Dieser Befehl ändert das Verzeichnis in das Ausgangsverzeichnis Ihres Benutzers ./ssh.

cat id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'

Dieser Befehl druckt die Datei id_rsa.pub (Ihren öffentlichen Schlüssel) in authorized_keys auf dem Server.

WICHTIG: Beda ist Ihr Benutzername auf dem Server, mit dem Sie sich verbinden, B ist Ihre Server-IP.

Jetzt können Sie ohne Kennwort oder Kennwortsatz eine Verbindung zum Server B herstellen:

ssh [email protected]
2
Petr Derian

Der Thread hier kann helfen.

Im Wesentlichen möchten Sie sowohl den RSA- als auch den ECDSA-Schlüssel für diesen Host entfernen und ihn dann mit ssh-keyscan so in Ihre known_hosts-Datei einfügen, dass dieser Konflikt nicht auftritt. Es hat bei mir funktioniert, als ich das gleiche Problem hatte.

1

Ich habe die folgenden Zeilen zu meiner ~/.ssh/config hinzugefügt, wodurch die strikte Host-Überprüfung für alle .local-Adressen deaktiviert wurde. (Bei der Zuweisung von DHCP-Adressen ändern sich die IP-Adressen meiner lokalen Computer ständig.)

Host *.local
    StrictHostKeyChecking no

Sie bekommen trotzdem die Warnung, die mir recht ist.

1
KimSJ

Dieser Fehler hat mich lange geärgert. Aus irgendeinem Grund machte es einen Unterschied, ob ich a tun würde

ssh Host

oder

ssh Host.domain

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

dann wies mich auf die Möglichkeit hin, die Konfigurationsdatei zu ändern. In meinem Skript https://askubuntu.com/a/949731/129227 finden Sie Informationen zur Automatisierung des Prozesses.

1
Wolfgang Fahl

Frage: Woran liegt das, ...?

Also hat sich der SSH-Server-Hostschlüssel geändert. Was hat die Änderung verursacht? Es ist schwer zu sagen. Hier sind einige Vermutungen:

  • Hat sshd auf myserver angefangen, ECDSA-Schlüssel zu verwenden, es ist also ein neuer Schlüsseltyp?
  • Wurde myserver kürzlich neu installiert?
  • Wurde sshd auf myserver kürzlich neu installiert, sodass ein neuer ssh-Hostschlüssel generiert wurde?
  • Hat jemand den sshd-Hostschlüssel neu generiert oder ersetzt?
  • Hat sich die IP-Adresse von myserver geändert, sodass ein anderer Host auf diese IP-Adresse antwortet?

Frage: ... und wie behebe ich das?

Entfernen Sie, wie andere bereits geantwortet haben, den zwischengespeicherten ECDSA-Host-Schlüssel für den von Ihrem Konto zwischengespeicherten MyServer.

1
Lars Nordin

So entfernen Sie einen bekannten Host-Fingerabdruck (aus der Datei known_hosts) unter Chrome OS:

Suchen Sie den Index des betreffenden Host-Eintrags in der SSH-Ausgabe, wenn die Verbindung fehlschlägt. Zum Beispiel ist in der Zeile unter dem beleidigenden Index 7 :

Offending ECDSA key in /.ssh/known_hosts:7

Öffnen Sie die JavaScript-Konsole (CTRL+Shift+JGeben Sie im Secure Shell-Fenster Folgendes ein und ersetzen Sie INDEX durch den entsprechenden Wert (z. B. 7 ):

term_.command.removeKnownHostByIndex(INDEX);

Diese Lösung wurde von Leo Gaggls Blog entlehnt.

0
Alex Yursha

Ich habe dies auf einem Chromebook durch Deinstallieren und erneutes Installieren von Secure Shell behoben ... Es hat wie ein Zauber funktioniert.

0
msersen