J'ai écrit ce petit script utilitaire:
for h in $SERVER_LIST; do ssh $h "uptime"; done
Lorsqu'un nouveau serveur est ajouté à $SERVER_LIST
, le script est arrêté avec:
The authenticity of Host 'blah.blah.blah (10.10.10.10)' can't be established.
RSA key fingerprint is a4:d9:a4:d9:a4:d9a4:d9:a4:d9a4:d9a4:d9a4:d9a4:d9a4:d9.
Are you sure you want to continue connecting (yes/no)?
J'ai essayé yes
:
for h in $SERVER_LIST; do yes | ssh $h "uptime"; done
sans chance.
Est-il possible de paramétrer ssh
pour accepter automatiquement toute nouvelle clé?
Utilisez l'option StrictHostKeyChecking, par exemple:
ssh -oStrictHostKeyChecking=no $h uptime
Cette option peut également être ajoutée à ~/.ssh/config, par exemple:
Host somehost
Hostname 10.0.0.1
StrictHostKeyChecking no
Notez que lorsque les clés de l'hôte ont changé, vous recevez un avertissement, même avec cette option:
$ ssh -oStrictHostKeyChecking=no somehost uptime
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 a Host key has just been changed.
The fingerprint for the RSA key sent by the remote Host is
31:6f:2a:d5:76:c3:1e:74:f7:73:2f:96:16:12:e0:d8.
Please contact your system administrator.
Add correct Host key in /home/peter/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/peter/.ssh/known_hosts:24
remove with: ssh-keygen -f "/home/peter/.ssh/known_hosts" -R 10.0.0.1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
ash: uptime: not found
Si vos hôtes ne sont pas souvent réinstallés, vous pouvez rendre cette opération moins sécurisée (mais plus pratique pour les clés d’hôte fréquemment modifiées) avec l’option -oUserKnownHostsFile=/dev/null
. Cela supprime toutes les clés d'hôte reçues afin de ne jamais générer l'avertissement.
Avec 18.04, il existe une nouvelle possibilité: StrictHostKeyChecking=accept-new
. De man 5 ssh_config
:
If this flag is set to “accept-new” then ssh will automatically
add new Host keys to the user known hosts files, but will not
permit connections to hosts with changed Host keys. If this flag
is set to “no” or “off”, ssh will automatically add new Host keys
to the user known hosts files and allow connections to hosts with
changed hostkeys to proceed, subject to some restrictions.
Vous pouvez utiliser la commande suivante pour ajouter l'empreinte digitale d'un serveur à votre hôte connu.
ssh-keyscan -H <ip-address> >> ~/.ssh/known_hosts
ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts
REMARQUE: Remplacez <adresse ip> et <nomhôte> par les noms IP et DNS du serveur que vous souhaitez ajouter.
Le seul problème avec ceci est que vous allez vous retrouver deux fois avec certains serveurs de votre unknown_hosts. Ce n'est pas vraiment un gros problème, juste mentionner. Pour vous assurer qu'il n'y a pas de doublons, vous pouvez d'abord supprimer tous les serveurs en lançant les éléments suivants:
ssh-keygen -R <ip-address>
ssh-keygen -R <hostname>
Pour que vous puissiez courir:
for h in $SERVER_LIST; do
ip=$(Dig +search +short $h)
ssh-keygen -R $h
ssh-keygen -R $ip
ssh-keyscan -H $ip >> ~/.ssh/known_hosts
ssh-keyscan -H $h >> ~/.ssh/known_hosts
done
Une chose à garder à l'esprit lorsque vous effectuez une suppression pour ajouter à nouveau, vous supprimez essentiellement la sécurité de la vérification de l'empreinte. Donc, vous ne voudrez certainement pas exécuter ce script avant chaque exécution de votre script utilitaire.
Je suis un peu en retard avec cette réponse, mais la solution sensée serait de faire un scan ssh-keys sur la nouvelle machine avant d'exécuter la collecte du temps de disponibilité.
ssh-keyscan <newhost> >> ~/.ssh/known_hosts
Désactiver le test de bon sens pour des raisons de commodité sonne comme un mauvais plan, même si vous pensez que vous maîtrisez totalement l'environnement.
Pour ajouter automatiquement une liste de serveurs, nous pouvons faire ci-dessous:
Ajouter des serveurs IP dans la liste de serveurs de fichiers
Les adresses IP doivent être ajoutées au format ci-dessous.
Sortie de cat servers-list
123.1.2.3
124.1.2.4
123.1.2.5
Changez d'IP ci-dessus en remplaçant le vôtre.
La commande ci-dessous ajoutera tous les serveurs de la liste.
ssh-keyscan -p61 -H "`cat servers-list`" >> ~/.ssh/known_hosts