web-dev-qa-db-fra.com

Comment ignorer ou passer «Oui» lorsque l'authenticité de l'hôte ne peut pas être établie dans le script Expect Shell pendant l'automatisation

Je veux fournir "Oui" automatiquement ou l'ignorer et procéder de manière SÉCURISÉE, lorsque l'instruction ci-dessous survient lors de l'exécution de mon script Expect Shell?.

#!/usr/bin/expect
spawn ssh $user@$Host

L'authenticité de l'hôte 'abcdef (10.566.1.98)' ne peut pas être établie. L'empreinte digitale de la clé RSA est jk: 94: ba: 93: 0b: eb: ff: df: ea: gh: hj: 23: 3c: hj: 9c: be. Voulez-vous vraiment continuer à vous connecter (oui/non)?

18
ShAn PrIyAn

Se servir de exp_continue pour ce scénario.

#!/usr/bin/expect 
set Prompt "#|>|\\\$"
spawn ssh dinesh@myhost
expect {
        #If 'expect' sees '(yes/no )', then it will send 'yes'
        #and continue the 'expect' loop
        "(yes/no)" { send "yes\r";exp_continue}
        #If 'password' seen first, then proceed as such.
        "password"
}
send "root\r"
expect -re $Prompt

Référence: Expect

3
Dinesh

Il est possible d'éviter cette question et d'accepter automatiquement toutes les clés entrantes en utilisant l'option client ssh StrictHostKeyChecking définie sur no (le paramètre par défaut est ask, ce qui entraîne cette question):

ssh -o StrictHostKeyChecking=no "$user@$Host"

Cependant, notez que ce ne serait guère sûr, car vous acceptez essentiellement de vous connecter avec tous ceux qui peuvent agir en tant qu'hôte donné. Le seul moyen sûr d'éviter la question est de pré-distribuer les clés publiques de l'hôte aux clients, c'est-à-dire sous la forme d'un fichier d'hôtes connu pré-généré, qui peut être utilisé d'une manière comme celle-ci:

ssh \
    -o UserKnownHostsFile=PATH_TO_YOUR_KNOWN_HOSTS_FILE \
    -o StrictHostKeyChecking=yes "$user@$Host"

De cette façon, vous éviterez la question si la vérification échoue et ssh entraînera un état de sortie différent de zéro.

33
GreyCat

Cela fonctionne, et c'est particulièrement pratique pour les builds de docker

ssh-keyscan hostname.example.com >> $HOME/.ssh/known_hosts
2
Ben Harper