Comment puis-je ajouter une clé d'hôte au known_hosts
fichier SSH en toute sécurité?
J'installe une machine de développement, et je veux (par exemple) empêcher git
de demander lorsque je clone un référentiel d' github.com
utiliser SSH.
Je sais que je peux utiliser StrictHostKeyChecking=no
(par exemple cette réponse ), mais ce n'est pas sûr.
Jusqu'à présent, j'ai trouvé ...
GitHub publie leurs empreintes digitales clés SSH sur https://help.github.com/articles/github-s-ssh-key-fingerprints/
Je peux utiliser
ssh-keyscan
pour obtenir la clé d'hôte pourgithub.com
.
Comment combiner ces faits? Étant donné une liste pré-remplie d'empreintes digitales, comment puis-je vérifier que la sortie de ssh-keyscan
peut être ajoutée au known_hosts
fichier?
Je suppose que je pose la question suivante:
Comment obtenir l'empreinte digitale d'une clé retournée par ssh-keyscan
?
Supposons que j'ai déjà été édité par MITM pour SSH, mais que je peux faire confiance à la page GitHub HTTPS (car elle possède une chaîne de certificats valide).
Cela signifie que j'ai des clés d'hôte SSH (suspectes) (de ssh-keyscan
) et des empreintes digitales de clé (de confiance). Comment vérifier l'un par rapport à l'autre?
Connexes: comment hacher la partie hôte de la sortie ssh-keyscan
? Ou puis-je mélanger des hôtes hachés / non hachés known_hosts
?
StrictHostKeyChecking=no
est vulnérable au MITM. Estssh-keyscan
sécurisé contre MITM?Réponses:
La partie la plus importante de l'ajout "sécurisé" d'une clé au
known_hosts
fichier consiste à obtenir l'empreinte de la clé auprès de l'administrateur du serveur. L'empreinte digitale doit ressembler à ceci:Dans le cas de GitHub, normalement nous ne pouvons pas parler directement à un administrateur. Cependant, ils ont mis la clé sur leurs pages Web afin que nous puissions récupérer les informations à partir de là.
Installation manuelle des clés
1) Prenez une copie de la clé du serveur et récupérez son empreinte digitale. NB: Faites ceci avant de vérifier l'empreinte digitale.
2) Obtenez une copie de l'empreinte digitale clé de l'administrateur du serveur - dans ce cas, accédez à la page contenant les informations sur github.com
3) Comparez les clés des deux sources
En les plaçant directement les uns au-dessus des autres dans un éditeur de texte, il est facile de voir si quelque chose a changé
(Notez que la deuxième clé a été manipulée, mais elle ressemble assez à l'original - si quelque chose comme cela se produit, vous êtes sérieusement attaqué et devez contacter un expert en sécurité de confiance.)
Si les clés sont différentes, abandonnez la procédure et contactez un expert en sécurité
4) Si les clés se comparent correctement, vous devez installer la clé que vous avez déjà téléchargée
Ou à installer pour tous les utilisateurs d'un système (en tant que root):
Installation automatisée des clés
Si vous devez ajouter une clé pendant un processus de construction, vous devez suivre les étapes 1 à 3 du processus manuel ci-dessus.
Cela fait, examinez le contenu de votre
github-key-temp
fichier et créez un script pour ajouter ce contenu à votre fichier d'hôtes connu.Vous devez maintenant vous débarrasser de toutes les
ssh
commandesStrictHostKeyChecking
désactivées.la source
Vous pouvez mélanger les entrées hachées / non hachées dans votre fichier known_hosts.
Donc, si vous souhaitez ajouter une clé github, vous pouvez simplement faire:
ssh-keyscan github.com >> ~/.ssh/known_hosts
Si vous voulez qu'il soit haché, ajoutez -H
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
la source
Le moyen le plus simple est de récupérer manuellement les clés à l'aide de
ssh-keyscan
, de les vérifier manuellement:Et ajoutez-les à votre script, qui portera alors la clé publique "faisant autorité".
la source