La première fois que vous vous connectez à un serveur, vous êtes invité à accepter l'empreinte digitale de l'hôte auquel vous vous connectez. L'empreinte digitale est une combinaison d'une signature numérique, du nom d'hôte et de l'adresse IP du serveur. Lorsque vous acceptez, l'empreinte digitale est enregistrée dans le fichier ~/.ssh/known_hosts
comme étant un hôte "de confiance".
Pour une raison quelconque, l'empreinte digitale du serveur a changé depuis la première fois que vous vous êtes connecté à lui. Cela peut être dû au fait qu'il ne s'agit pas du serveur auquel vous vous attendez, par exemple lorsque votre demande est interceptée et redirigée vers un autre serveur. D'où l'avertissement de sécurité. L'explication peut également être moins malveillante, par exemple lorsque le serveur a été remplacé/réinstallé sans restaurer sa signature numérique précédente, ou lorsque l'adresse IP a changé.
Si, malgré l'avertissement de sécurité, vous faites toujours confiance au serveur auquel vous vous connectez, vous devez ouvrir ~/.ssh/known_hosts
et recherchez la ligne commençant par l'adresse du serveur auquel vous vous connectez. Supprimez toute la ligne et enregistrez vos modifications, puis reconnectez-vous au serveur. La première fois que vous vous connectez, le serveur devrait vous demander d'accepter l'empreinte digitale mise à jour, après quoi vous ne devriez plus avoir de problèmes pour vous connecter à cet hôte.
La raison pour laquelle il fonctionnerait avec sudo
C'est parce que dans ces conditions, vous l'exécutez en tant qu'utilisateur différent (Root), et chaque utilisateur a son propre fichier known_hosts (pour Root, il se trouve à l'adresse /private/var/root/.ssh/known_hosts
). Il se peut que Root n'ait jamais enregistré l'empreinte précédente de cet hôte et qu'il n'ait donc aucun moyen de la comparer à l'empreinte actuelle, ni aucune raison de se méfier du serveur.