web-dev-qa-db-fra.com

SSH dans une boîte avec une adresse IP fréquemment modifiée

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?

24
coneybeare

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.

21
sysadmin1138

Ajout: Vous pouvez essayer uniquement de désactiver le checkHostipar check pour que Nom:

Host *
  [ global settings .. ]

Host very.dynamic.Host
  CheckHostIP no
25
Koos van den Hout

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). :)

4
zaTricky

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"
2
Zv_oDD

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.

1
hayalci

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.

1
Steven Monday

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.

0
Hbar