Vieille question, qui mérite une meilleure réponse.
Vous pouvez empêcher l'invite interactive sans désactiver StrictHostKeyChecking
(ce qui est d'insécurité).
Intégrer la logique suivante dans votre script:
if [[ -z `ssh-keygen -F $IP` ]]; then
ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi
Il vérifie si la clé publique du serveur est en known_hosts
. Si pas, il demande la clé publique du serveur et l'ajoute à l' known_hosts
.
De cette façon, vous êtes exposé à Man-In-The-Middle attaque qu'une seule fois, ce qui peut être atténué par:
- s'assurer que le script se connecte première fois sur un canal sécurisé
- l'inspection des rondins ou known_hosts pour vérifier les empreintes digitales manuellement (à faire une seule fois)