Known_hosts zwischen Computern kopieren?

3044
OJW

Stellen Sie über OpenSSH_5.9p1 OpenSSL 1.0.1 eine Verbindung zu einem Server her, und es speichert ein .ssh / known_hosts mit dem folgenden Format:

|1|wwwwwwwwwwwwwww=|wwwwwwwwww= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA= 

Kopieren Sie dann die Datei known_hosts auf einen anderen PC, auf dem OpenSSH_4.5p1 OpenSSL 0.9.8d ausgeführt wird, und es wird die Meldung "Authentizität kann nicht hergestellt werden, sind Sie sicher, dass Sie die Verbindung fortsetzen möchten" angezeigt, als wäre die Datei known_hosts nicht korrekt.

Wenn dieser zweite PC die known_hosts für denselben Server speichert, schreibt er dies im folgenden Format:

[10.2.3.4]:22 ssh-rsa AAAAAAAAAA/BBBBB/CCCCCC//DDDDDD 

Gibt es eine Möglichkeit, zwischen den beiden Formaten zu konvertieren?

3
Warum aktualisieren Sie nicht einfach OpenSSL auf dem anderen Rechner. openssl-1.0.1c ist die aktuelle Version. Es ist keine gute Idee, verwundbare Versionen von OpenSSL zu verwenden. Ich sollte darauf hinweisen, dass 0.9.8d für einen ungültigen TLS / DTLS-Record-Angriff anfällig ist. Ramhound vor 11 Jahren 1
Ich verstehe, dass die Verwendung derselben Version von OpenSSL auf beiden Computern die Freigabe von Konfigurationsdateien ermöglicht. Obwohl dies eine ausgezeichnete Idee ist, geht es in dieser Frage darum, wie man known_hosts erstellt, die von diesen beiden Versionen gemeinsam genutzt werden können. OJW vor 11 Jahren 0
Da ich die Antwort auf Ihre Frage nicht kannte, schlug ich eine logische Lösung vor. Verwenden Sie auf beiden Computern dieselbe Version. Außerdem sollten Sie die Verwundbarkeit tatsächlich gegen die von Ihnen verwendete Version richten. Ramhound vor 11 Jahren 0

2 Antworten auf die Frage

5
grawity

Ihr erstes Beispiel enthält einen ECDSA-Schlüssel ( ecdsa-sha2-nistp256), der in OpenSSH 5.7 eingeführt wurde.

OpenSSH 4.5 unterstützt nur RSA- und DSA-Schlüssel ( ssh-rsaund ssh-dss) und ignoriert den Eintrag known_hosts.

Was ist der kleinste gemeinsame Nenner dieser beiden Versionen? Welche Befehlszeilenoption gibt also v5.7 an, die beste Verschlüsselung zu verwenden, die v4.5 versteht. OJW vor 11 Jahren 0
@OJW: `-o HostKeyAlgorithms` - siehe ssh_config (5). grawity vor 11 Jahren 0
Vielen Dank. Was ist der beste HostKeyAlgorithm, den beide Versionen verstehen werden? OJW vor 11 Jahren 0
@OJW: Das ist schon in der Antwort ... grawity vor 11 Jahren 0
ah ja danke. Ich habe ecdsa in / etc / ssh / sshd_config des Servers auskommentiert (und HashKnownHosts auf dem Client deaktiviert), und der Client hat dann einen kompatiblen known_hosts mit rsa-Schlüssel generiert, so dass das problemlos funktioniert hat. Ich habe jedoch keine Möglichkeit gefunden, dass der Client Nicht-ecdsa angibt? OJW vor 11 Jahren 0
@OJW: Geben Sie alle HostKeyAlgorithms an, die * nicht * ECDSA sind (dh `HostKeyAlgorithms = ssh-rsa, ssh-dss '). grawity vor 11 Jahren 0
@OJW: Alternativ können Sie mehrere * öffentliche Schlüssel für denselben Host zu "known_hosts" hinzufügen (z. B. mit "ssh-keyscan") oder indem Sie einfach aus dem Server / etc / ssh / ssh_host _ * _ key.pub `kopieren ) - auf diese Weise würden moderne Kunden die ECDSA-Leitung überprüfen, und ältere würden RSA oder DSS verwenden. (Obwohl ich hier keine Vorteile für ECDSA nennen kann, tun Sie es wie Sie möchten.) grawity vor 11 Jahren 0
4
jjlin

Das erste Schlüsselformat, das Sie verwenden, ist ein Hash-Format. Es soll verhindern, dass jemand, der in Ihr Konto eingebrochen ist, weiß, mit welchen anderen Hosts er / sie sich möglicherweise mit Ihrem Kennwort und / oder Ihren SSH-Schlüsseln verbinden kann.

Es ist möglich, das Klartext-Format in das Hash-Format zu konvertieren, nicht jedoch umgekehrt. Zu diesem Zweck gibt es im Internet verschiedene Skripte.

Wenn Sie sich nicht so sehr um dieses Problem sorgen, können Sie es jederzeit hinzufügen

HashKnownHosts no 

auf, ~/.ssh/configum den zu deaktivieren known_hostsHashing. Weitere Informationen finden Sie in ssh_config (5) .

+1, aber das ist nicht das eigentliche Problem. grawity vor 11 Jahren 0
immer noch nützlich zu wissen :) OJW vor 11 Jahren 0