
Ich habe einen Chron-Job, der ein Bash-Skript ausführt, das dann per SSH auf meinen Server zugreift. Aber die IP-Adresse meines Servers ändert sich von Zeit zu Zeit (mein Bash-Skript hat eine Möglichkeit, die neue IP-Adresse nachzuschlagen). Aber das Problem ist, dass mein Bash-Skript dann die Warnung „Authentizität des Hosts kann nicht festgestellt werden …“ erhält. Ich möchte es nicht verwenden, StrictHostKeyChecking=no
weilder Mann in der MitteAngriffe. Allerdings:
Wenn dasRSA-Schlüsselist identisch mit zB einemRSA-Schlüsselbereits in der known_host
Datei vorhanden, oder einRSA-Schlüsseldie ich in einer anderen Datei gespeichert habe MyServersPublicKey
, dann gehe ich davon aus, dass es mein Server ist und er lediglich eine neue IP hat.
Die Warnung selbst zeigt dieFingerabdruckdesRSA-Schlüsselvom "unbekannten" Host, nicht vomRSA-Schlüsselselbst. Ich schätze, ich könnte sparen dieRSA-Schlüssel Fingerabdruckvon meinem Host und lasse dann mein Bash-Skript dieFingerabdruckaus der Warnung und vergleichen Sie sie mit dem gespeichertenFingerabdruck. Aber ich frage mich, ob jemand einen einfacheren Weg kennt.
Muss ich hierfür ein eigenes Bash-Skript schreiben oder gibt es dafür schon etwas?
Antwort1
Wie in den Kommentaren erwähnt, kann das Erstellen von Zertifikaten (signierte Hostschlüssel) dieses Problem lösen (siehe Handbuchseite für ssh-keygen
, Kapitel „Zertifikate“, in dem dieses Verfahren beschrieben wird). Im Grunde würden Sie eine Zertifizierungsstelle auf dem Server erstellen, die Hostschlüssel signieren und den öffentlichen Schlüssel der Zertifizierungsstelle in Ihrem Computer speichern, known_hosts
beispielsweise:
@cert-authority * ssh-rsa AAAAB5W...
Die andere Möglichkeit wäre, ein Bash-Skript zu schreiben, das Ihre IP vor dem Host-Schlüssel einfügt known_hosts
(falls Sie diese Datei nicht gehasht haben). So etwas sollte funktionieren:
sed -i -e "s/your_host/new_ip,your_host/" ~/.ssh/known_hosts