Les options "StrictHostKeyChecking no" et "ssh-keyscan" ne sont pas sûres. besoin de une validation manuelle de l'empreinte digitale à un moment donné pour éviter une attaque MiTM si vous vous en tenez à ssh.
En fait, vous avez deux options :
Utiliser le protocole https au lieu de git
Il ne vous demandera pas d'empreinte digitale, car ssh n'est pas impliqué, https est utilisé à la place. Pour des raisons de sécurité, vous faites confiance aux certificats racine installés sur votre système d'exploitation. Si vous utilisez une image minimaliste ou Docker, vous devrez peut-être installer le paquet ca-certificates.
Si vous voulez vraiment le protocole git+ssh
Avez-vous vraiment besoin d'ajouter la clé au moment de l'exécution ? Ce n'est pas sûr, car vous n'avez pas vérifié l'empreinte digitale, ce qui vous expose aux attaques MiTM. Ce n'est pas seulement théorique, et il a été prouvé que cela fonctionne.
Avant d'exécuter votre script, récupérez la clé depuis github (sur votre machine locale) :
ssh-keyscan github.com >> githubKey
Générer l'empreinte digitale :
ssh-keygen -lf githubKey
Et vérifiez-le manuellement contre ceux énumérés dans cette page (ok, là vous faites confiance aux certificats https et à OpenSSL pour vous apporter le site web original de github, mais c'est toujours bien mieux que d'accepter aveuglément une clé publique).
Alternativement (en faisant confiance au même https et à OpenSSL), vous pouvez le récupérer à l'adresse suivante https://api.github.com/meta comme ça : curl -s https://api.github.com/meta | jq ."ssh_key_fingerprints" | grep RSA
. (Merci à @willscripted pour celui-ci)
Ensuite, vous le codez en dur dans votre script en l'ajoutant :
echo '<copy paste the content of 'cat githubKey' on your machine>' >> ~/.ssh/known_hosts
avant le clone git.
La clé publique de GitHub ne changera que s'ils estiment qu'elle a été compromise (ou pas assez sécurisée). Si c'est le cas, vous veulent votre script d'échouer de toute façon.
0 votes
Il est intéressant de voir que même après deux ans, cette question n'a pas de réponse appropriée. Il y a quelques autres cas où git vous invitera, par exemple si vous essayez de cloner par http et que le serveur demande basic_auth. Comment faire cela en mode non-interactif ?
3 votes
Ajout de la
-q
L'option (silencieuse) l'a fait pour moi. Maintenant je suis coincé à automatiser la phrase de passe.