Question Ajouter en toute sécurité un hôte (par exemple, github) au fichier SSH known_hosts?


Comment puis-je ajouter une clé d'hôte au SSH known_hosts déposer en toute sécurité?

Je configure une machine de développement et je veux (par exemple) empêcher git de demander quand je clone un référentiel de github.com en utilisant SSH.

Je sais que je peux utiliser StrictHostKeyChecking=no (par exemple. cette réponse), mais ce n'est pas sécurisé.

Jusqu'à présent, j'ai trouvé ...

  1. Github publie ses empreintes de clé SSH sur https://help.github.com/articles/github-s-ssh-key-fingerprints/

  2. je peux utiliser ssh-keyscan pour obtenir la clé de l'hôte pour github.com.

Comment combiner ces faits? Étant donné une liste prédéfinie d’empreintes digitales, comment puis-je vérifier que la sortie de ssh-keyscan peut être ajouté à la known_hosts fichier?


Je suppose que je demande ce qui suit:

Comment obtenir l’empreinte d’une clé renvoyée par ssh-keyscan?

Supposons que j'ai déjà été MITM-ed pour SSH, mais que je peux faire confiance à la page HTTPS de github (car elle possède une chaîne de certificats valide).

Cela signifie que j'ai quelques clés (suspectes) d'hôte SSH (de ssh-keyscan) et quelques empreintes de clés (de confiance). Comment puis-je vérifier l'un par rapport à l'autre?


Connexes: comment puis-je hacher la partie hôte de la sortie de ssh-keyscan? Ou puis-je mélanger des hôtes hachés / déchaînés dans known_hosts?


5
2018-06-16 10:22


origine


Pourquoi ne serait-il pas sécurisé pour votre cas d'utilisation? - quadruplebucky
StrictHostKeyChecking=no est vulnérable à MITM. Est ssh-keyscan sécuriser contre MITM? - Roger Lipscombe
Je n'arrive pas à comprendre pourquoi je m'inquiète excessivement de voir quelqu'un imiter un étranger que je n'ai jamais rencontré et en qui j'ai assez confiance pour écrire du code que je suis sur le point de télécharger et d'exécuter ... - quadruplebucky
Parce que c'est mon code source dans un dépôt privé sur github, et je ne veux pas d’un MITM (par exemple) introduisant des modifications malveillantes lorsque je pousse des commits. C'est juste un Exemple. - Roger Lipscombe
Je (pour le meilleur ou pour le pire) choisit de faire confiance à github. Je ne choisis pas de faire confiance à chaque lien de réseau aléatoire entre moi et eux. - Roger Lipscombe


Réponses:


Le moyen le plus simple consiste à récupérer manuellement les clés à l'aide de ssh-keyscan, vérifiez-les manuellement:

$ ssh-keyscan -t rsa github.com | ssh-keygen -lf -
# github.com:22 SSH-2.0-libssh-0.7.0
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)

Et ajoutez-les à votre script, qui portera ensuite la clé publique "faisant autorité".


5
2018-06-16 11:42





Vous pouvez mélanger des entrées hachées / non hachées dans votre fichier known_hosts.

Donc, si vous voulez ajouter la clé github, vous pouvez simplement faire:

ssh-keyscan github.com >> ~/.ssh/known_hosts

Si vous voulez que cela soit haché, ajoutez -H

ssh-keyscan -H github.com >> ~/.ssh/known_hosts


7
2018-06-16 10:32