Nous tentons d'accélérer l'installation des nœuds Oracle pour l'installation de RAC. cela nécessite que ssh soit installé et configuré pour qu'il ne demande pas de mot de passe.
Le problème est le suivant: lors de la première utilisation, nous sommes invités à
RSA key fingerprint is 96:a9:23:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f.
Are you sure you want to continue connecting (yes/no)? yes
Existe-t-il un moyen d'éviter cela ou sommes-nous condamnés à nous connecter au moins une fois sur chaque serveur à partir de chaque serveur manuellement?
Mise à jour de décembre 2019:
Comme Chris Adams l'a souligné ci-dessous, il y a eu un changement assez important à Openssh au cours des 6,5 années écoulées depuis la rédaction de cette réponse, et il existe une nouvelle option qui est beaucoup plus sûre que les conseils originaux ci-dessous:
* ssh(1): expand the StrictHostKeyChecking option with two new
settings. The first "accept-new" will automatically accept
hitherto-unseen keys but will refuse connections for changed or
invalid hostkeys. This is a safer subset of the current behaviour
of StrictHostKeyChecking=no. The second setting "off", is a synonym
for the current behaviour of StrictHostKeyChecking=no: accept new
Host keys, and continue connection for hosts with incorrect
hostkeys. A future release will change the meaning of
StrictHostKeyChecking=no to the behaviour of "accept-new". bz#2400
Ainsi, au lieu de définir StrictHostKeyChecking no
dans ton ssh_config
fichier, définissez StrictHostKeyChecking accept-new
.
Ensemble StrictHostKeyChecking no
dans ton /etc/ssh/ssh_config
fichier, où ce sera une option globale utilisée par tous les utilisateurs du serveur. Ou placez-le dans votre ~/.ssh/config
fichier, où il sera la valeur par défaut uniquement pour l'utilisateur actuel. Ou vous pouvez l'utiliser sur la ligne de commande:
ssh -o StrictHostKeyChecking=no -l "$user" "$Host"
Voici une explication de la façon dont cela fonctionne à partir de man ssh_config
(ou voir cette version plus récente ):
StrictHostKeyChecking
Si cet indicateur est défini sur "oui", ssh n'ajoutera jamais automatiquement de clés d'hôte à
$HOME/.ssh/known_hosts
file et refuse de se connecter aux hôtes dont la clé d'hôte a changé. Cela offre une protection maximale contre les attaques de chevaux de Troie, mais peut être ennuyeux lorsque le/etc/ssh/ssh_known_hosts
file est mal entretenu ou des connexions à de nouveaux hôtes sont fréquemment établies. Cette option oblige l'utilisateur à ajouter manuellement tous les nouveaux hôtes. Si cet indicateur est défini sur "non", ssh ajoutera automatiquement de nouvelles clés d'hôte aux fichiers d'hôtes connus de l'utilisateur. Si cet indicateur est défini sur "demander", de nouvelles clés d'hôte ne seront ajoutées aux fichiers d'hôte connus de l'utilisateur qu'après que l'utilisateur a confirmé que c'est ce qu'il veut vraiment faire, et ssh refusera de se connecter aux hôtes dont la clé d'hôte a changé. Les clés d'hôte des hôtes connus seront vérifiées automatiquement dans tous les cas. L'argument doit être "oui", "non" ou "demander". La valeur par défaut est "demander".
ssh-keyscan
- Rassemblez les clés publiques ssh
Si vous connaissez déjà la liste des hôtes auxquels vous vous connecterez, vous pouvez simplement émettre:
ssh-keyscan Host1 Host2 Host3 Host4
Vous pouvez donner le -H
option pour qu'il hache les résultats comme ssh par défaut maintenant
Vous pouvez également donner -t keytype
étaient type de clé est dsa
, rsa
ou ecdsa
si vous avez une préférence quant au type de clé à récupérer au lieu de la valeur par défaut .
Une fois que vous avez exécuté ssh-keyscan
il aura pré-rempli votre fichier d'hôtes connus et vous n'aurez pas ssh vous demandant la permission d'ajouter une nouvelle clé.
Vous pouvez ajouter l'empreinte digitale aux hôtes connus de chaque serveur. Pour un seul utilisateur:
cat ~/.ssh/known_hosts
echo "$SERVER,$PORT ssh-rsa $SERVER_KEY_FINGERPRINT" >> ~/.ssh/known_hosts
Ignorez HostKeyChecking. Pour cela j'utilise par exemple:
ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null [email protected]
Ajoutez l'empreinte digitale de l'hôte/serveur à .ssh/known_hosts
avant votre première connexion. C'est le moyen le plus sûr.
Exécutez l'extrait de code suivant avant d'essayer.
mkdir -p ~/.ssh
echo "Host *" > ~/.ssh/config
echo " StrictHostKeyChecking no" >> ~/.ssh/config
ps: strictement pas pour les serveurs de production, méfiez-vous de ManInMiddle
Exécutez l'extrait de code suivant avant d'essayer.
mkdir -p ~/.ssh && echo "Host *" > ~/.ssh/config && echo " StrictHostKeyChecking no" >> ~/.ssh/config
ps: strictement pas pour les serveurs de production, méfiez-vous de ManInMiddle
J'aime la réponse de Tim pour des choses hors type, cependant, si c'est un hôte auquel vous avez l'intention de vous connecter régulièrement, je créerais une entrée dans votre ~/.ssh/config (créez-la si le fichier n'existe pas).
# this example shows wildcard for IP
# you can even use more than one wildcard 10.0.*.* for example
Host 192.168.56.*
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
# you can even alias it, which is really useful when scp'ing/rsyncing foo:/path/to/remote
Host foo
HostName foo-long-192-10-135-55.hostname.not-going-to-remember.doh
StrictHostKeyChecking no
UserKnownHostsFile /dev/null