J'ai des boîtes nuageuses qui changent fréquemment de leur adresse IP.
I SSH à l'aide du nom d'hôte, mais devez éditer le fichier connu_hosts chaque fois que le serveur est lancé en raison de ce message d'erreur:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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…
Outre tous les risques de sécurité et tels que ceux qui sont associés à ce que je veux faire, il existe un moyen d'ignorer cette erreur ou d'écraser le fichier connu_hosts automatiquement tel que je n'ai pas toujours à le modifier moi-même?
Modifiez votre fichier SSH_CONFIG et ajoutez Modifier cette ligne:
CheckHostIP no
CheckHostip par défaut sur 'Oui'. Ce que cela fait est de faire exactement le type de vérification que vous échouez. Tourner le désactivé signifie qu'il suffit de faire confiance que la propriété intellectuelle est variable et la volonté de vérifier le nom d'hôte.
Ajout: Vous pouvez essayer uniquement de désactiver le checkHostipar check pour que Nom:
Host *
[ global settings .. ]
Host very.dynamic.Host
CheckHostIP no
Beaucoup de réponses ici travailleront - mais techniquement, ils sont des solutions de contournement. OpenSSH a déjà une fonctionnalité intégrée dans cet esprit: HostKeyAlias
.
Dans votre fichier .SSH/config, ajoutez HostKeyAlias <alias>
à une configuration de l'hôte:
Host myserver.example.com
HostKeyAlias myserver.example.com
Avec cela en place, connectez-vous au serveur myserver.example.com
n'utilisera pas le nom d'hôte ou l'adresse IP de la référence locale - elle uniquement Utilisez l'hostkeyalias donné lors de la connexion à ce serveur. Pour moi, il est logique d'utiliser le nom d'hôte - mais vous pouvez bien sûr utiliser n'importe quel alias que vous aimez.
Les configurations typiques pour moi pour des hôtes dynamiques sont comme:
Host myserver
hostname myserver.dyn.example.com
HostKeyAlias myserver.private.example.com
Cela peut également être utilisé dans certains scénarios obscurs où vous connaissez un groupe de vos serveurs possédez les mêmes clés d'hôte (généralement cela devrait non . Cela empêcherait ensuite les entrées en double. À l'avenir, si les clés changent légitimement, vous n'avez pas à remplacer/supprimer plusieurs entrées. Seulement un. Les serveurs Gitlab Geo sont un bon exemple de cela.
En ce qui concerne le dédouanement du fichier connu_hosts, je suggérerais d'examiner d'autres questions/réponses spécifiquement liées au maintien/enlever les entrées stables connus_hosts. Par exemple, voir Comment gérer mon fichier .SSH/connais_hosts ; Je suis particulièrement impressionné par la réponse de l'utilisateur1953828, bien que je voie ne présente pas beaucoup de upvotes (encore). :)
J'utilise ces options loutures pour contourner ce problème. (La clé publique de ma hôte est régénérée assez souvent. Donc, cela supprime le contrôle IP et clé)
ssh remoteServerName -l username -o "UserKnownHostsFile=/dev/null"
Vous pouvez également simplement utiliser ceci si la clé reste identique mais que la propriété intellectuelle change:
ssh remoteServerName -l username -o "CheckHostIP=no"
Vous pouvez définir stricthostkeyChecking = NON dans votre configuration SSH Client (c'est-à-dire le fichier ~/ssh/config sur la machine que vous connectez de), pour ignorer l'avertissement.
Vous pourriez mettre CheckHostIP no
Dans votre ~/.ssh/config
Fichier, mais cela vous laisse ouvrir les attaques d'usurpation. Si vous n'êtes pas préoccupé par cela, ce paramètre devrait éteindre le known_hosts
Chèque.
J'évite d'ajouter les empreintes digitales à mon known_hosts
Fichier lors de la connexion aux machines AWS transitoires. J'utilise une commande telle que
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i secret.pem [email protected]
pour se connecter à eux. Il ne vous demandera pas si vous souhaitez ajouter la machine "à la liste des hôtes connus". Remplacer 10.0.0.5
par l'adresse IP de votre machine et secret.pem
Par le chemin complet de votre clé SSH. Vous obtiendrez toujours des avertissements que le 10.0.0.5
a été ajouté, mais il a vraiment disparu dans /dev/null
. Je fais cela assez souvent que je fixe un alias dans mon ~/.profile
alias awsssh='ssh -i secret.pem -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
Je réserve ssh [email protected]
Tapez les commandes pour les machines ont été passées à la peine de vérifier l'empreinte digitale.