Wie kann ich der SSH- known_hosts
Datei sicher einen Hostschlüssel hinzufügen ?
Ich richte eine Entwicklungsmaschine ein und möchte (z. B.) verhindern, dass git
beim Klonen eines Repositorys github.com
SSH verwendet wird.
Ich weiß, dass ich StrictHostKeyChecking=no
(z. B. diese Antwort ) verwenden kann, aber das ist nicht sicher.
Bisher habe ich gefunden ...
GitHub veröffentlicht seine SSH-Key-Fingerabdrücke unter https://help.github.com/articles/github-s-ssh-key-fingerprints/
Ich kann verwenden
ssh-keyscan
, um den Host-Schlüssel für zu bekommengithub.com
.
Wie verbinde ich diese Fakten? Wie überprüfe ich anhand einer vorab ausgefüllten Liste von Fingerabdrücken, ob die Ausgabe von ssh-keyscan
der known_hosts
Datei hinzugefügt werden kann?
Ich schätze, ich frage Folgendes:
Wie erhalte ich den Fingerabdruck für einen zurückgegebenen Schlüssel ssh-keyscan
?
Angenommen, ich bin bereits für SSH MITM- geprüft, kann aber der GitHub-HTTPS-Seite vertrauen (da sie eine gültige Zertifikatskette hat).
Das bedeutet, dass ich einige (verdächtige) SSH-Hostschlüssel (von ssh-keyscan
) und einige (vertrauenswürdige) Fingerabdrücke habe. Wie überprüfe ich eins gegen das andere?
Verwandte: Wie hashe ich den Host-Teil der Ausgabe von ssh-keyscan
? Oder kann ich gehashte / nicht gehashte Hosts einmischen known_hosts
?
StrictHostKeyChecking=no
ist anfällig für MITM. Istssh-keyscan
sicher gegen MITM?Antworten:
Der wichtigste Teil des "sicheren" Hinzufügens eines Schlüssels zur
known_hosts
Datei ist das Abrufen des Schlüsselfingerabdrucks vom Serveradministrator. Der Schlüsselfingerabdruck sollte ungefähr so aussehen:Bei GitHub können wir normalerweise nicht direkt mit einem Administrator sprechen. Sie platzieren den Schlüssel jedoch auf ihren Webseiten, damit wir die Informationen von dort wiederherstellen können.
Manuelle Schlüsselinstallation
1) Nehmen Sie eine Kopie des Schlüssels vom Server und holen Sie sich den Fingerabdruck. Hinweis: Tun Sie dies, bevor Sie den Fingerabdruck überprüfen.
2) Fordern Sie vom Serveradministrator eine Kopie des Schlüsselfingerabdrucks an. Navigieren Sie in diesem Fall zu der Seite mit den Informationen auf github.com
3) Vergleichen Sie die Schlüssel der beiden Quellen
Indem Sie sie direkt übereinander in einem Texteditor platzieren, können Sie leicht feststellen, ob sich etwas geändert hat
(Beachten Sie, dass der zweite Schlüssel manipuliert wurde, aber dem Original ziemlich ähnlich ist. Wenn so etwas passiert, werden Sie ernsthaft angegriffen und sollten sich an einen vertrauenswürdigen Sicherheitsexperten wenden.)
Wenn die Schlüssel unterschiedlich sind, brechen Sie den Vorgang ab und setzen sich mit einem Sicherheitsexperten in Verbindung
4) Wenn die Schlüssel korrekt verglichen werden, sollten Sie den bereits heruntergeladenen Schlüssel installieren
Oder für alle Benutzer auf einem System (als root) installieren:
Automatisierte Schlüsselinstallation
Wenn Sie während eines Erstellungsvorgangs einen Schlüssel hinzufügen müssen, befolgen Sie die Schritte 1-3 des obigen manuellen Vorgangs.
Nachdem Sie dies getan haben, überprüfen Sie den Inhalt Ihrer
github-key-temp
Datei und erstellen Sie ein Skript, um diesen Inhalt zu Ihrer bekannten Hosts-Datei hinzuzufügen.Sie sollten nun loswerden irgendwelche
ssh
Befehle , die habenStrictHostKeyChecking
deaktiviert.quelle
Sie können hashed / unhashed-Einträge in Ihrer known_hosts-Datei mischen.
Wenn Sie also einen Github-Schlüssel hinzufügen möchten, können Sie Folgendes tun:
ssh-keyscan github.com >> ~/.ssh/known_hosts
Wenn Sie wollen, dass es gehasht wird, fügen Sie -H hinzu
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
quelle
Am einfachsten ist es, die Schlüssel manuell abzurufen
ssh-keyscan
und manuell zu überprüfen:Fügen Sie sie Ihrem Skript hinzu, das dann den "maßgeblichen" öffentlichen Schlüssel enthält.
quelle