web-dev-qa-db-fra.com

Comment puis-je forcer ssh à accepter une nouvelle empreinte de l'hôte à partir de la ligne de commande?

J'obtiens la norme 

WARNING: REMOTE Host IDENTIFICATION HAS CHANGED!
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA Host key has just been changed.
The fingerprint for the RSA key sent by the remote Host is

message d'erreur. Cependant, le système (Appworx) qui exécute la commande (sftp, cela importe peu) est automatisé et je ne peux pas accepter facilement la nouvelle clé, même après avoir vérifié auprès du fournisseur tiers qu'il s'agissait d'un changement valide. Je peux ajouter un nouveau script Shell que je peux exécuter à partir du même système (et du même utilisateur), mais il ne semble pas exister de commande ou d'argument de ligne de commande indiquant à ssh d'accepter la clé. Je ne trouve rien dans la page de manuel ou sur Google. C'est sûrement possible?

18
John O

Voici comment dire à votre client de faire confiance à la clé. Une meilleure approche consiste à lui donner la clé à l'avance, ce que j'ai décrit dans le deuxième paragraphe. Ceci est pour un client OpenSSH sous Unix, donc j'espère que cela correspond à votre situation.

Vous pouvez définir le paramètre StrictHostKeyChecking. Il a les options yes, no et ask. La valeur par défaut est ask. Pour l’adapter à l’ensemble du système, éditez /etc/ssh/ssh_config; pour le définir juste pour vous, éditez ~/.ssh/config; et pour le définir pour une seule commande, indiquez l’option sur la ligne de commande, par exemple.

ssh -o "StrictHostKeyChecking no" hostname

Une autre approche si vous avez accès aux clés de l'hôte pour le système distant consiste à les ajouter à votre fichier known_hosts à l'avance, afin que SSH les connaisse et ne pose pas la question. Si cela est possible, c'est mieux du point de vue de la sécurité. Après tout, l’avertissement est peut-être juste et vous pourriez vraiment être sujet à une attaque de type "man-in-the-middle".

Par exemple, voici un script qui récupérera la clé et l'ajoutera à votre fichier known_hosts:

ssh -o 'StrictHostKeyChecking no' hostname cat /etc/ssh/ssh_Host_dsa_key.pub >>~/.ssh/known_hosts
25
Peter Westlake

Les réponses ici sont un conseil terrible. Vous ne devez jamais désactiver StrictHostKeyChecking dans un système réel (par exemple, si vous ne jouez que sur votre propre réseau local, vous pourrez probablement le faire, mais ne le faites pas).

Utilisez plutôt:

ssh-keygen -R hostname

Cela forcera le fichier known_hosts à être mis à jour pour supprimer l'ancienne clé du serveur qui a mis à jour sa clé.

Ensuite, lorsque vous utilisez:

ssh user@hostname

Il vous demandera de confirmer l’empreinte digitale - comme c’est le cas pour tout autre "nouveau" serveur (c’est-à-dire auparavant invisible).

6
AJ Poulter

Ajouter le fichier suivant

~/.ssh/config

et ceci dans le fichier en tant que contenu

StrictHostKeyChecking no

Ces paramètres feront en sorte que ssh ne demande plus jamais de vérification d'empreinte digitale.

0