Ssh scripts de connexion sans mot de passe automatiquement set - Réservez - https://itbook.com/

Lien original: IT book - itbook.com

but

configuration en un clic entre les nœuds de cluster de connexion sans mot de passe. A condition que les mots de passe sur tous les nœuds est le même!

réalisation

Je viens ~ / sans mot de passe

Contenu du script:

#! / bin / sh 

# tous les noms de noeud 
NŒUDS = ()   
# tout mot de passe noeud 
PASS = $ 1  
###### longueur de validation 
de nodes_length = $ (($ # - 1 ))
 si [[ss -gt 0 ] ]; puis 
  echo  " Sortie: Au moins deux paramètres, par exemple: votre_mot_de_passe, node1 " 
  exit 2  
fi 
###### Obtenez tous les noms de noeud 
i = 0 
pour le noeud de $ *
 faire 
   si [[i -gt 0 ]]; alors 
     j = $ ((i -1 )) 
     NODEs [j] = noeud $
    fi 
   soit i ++
 done 
MASTER = ` nom d' hôte ` 

yum -y installer attendre 

######################## ########### 
fonction ssh_cmd0 () { 
user_and_host = $ 1 
mot de passe = $ 2 
cmd = $ 3 
/ usr / bin / expect << - EOF 
set délai d' attente 5 
spawn ssh $ user_and_host 
attendre { 
" oui / pas " {send " oui \ r "; exp_continue}
 " mot de passe " {send " $ password \ r " } 
} 
attendre " # "   
envoyer " $ cmd \ r " 
attendre " # "  
exit 0 
Interagir 
EOF 
} 

fonction ssh_cmd () { 
    ssh_cmd0 " $ 1 "  " $ 2 "  " echo 'start_mark'; $ 3; echo 'end_mark' " | sed -n ' / ^ start_mark /, / ^ end_mark / p ' | poignéeEV- ' (^ start_mark | ^ end_mark) ' 
} 

###### Créer tous authorized_keys noeuds, et la collecte de maître. 
echo  "" > ~ /. ssh / authorized_keys
 echo  "" > ~ /. ssh / known_hosts 

pour s en $ {NŒUDS [@]}
 faire 
  écho -e " \ nstart :: node esclave ($ s) id_rsa.pub génère et envoie nœud maître ($ MASTER) " 
  
  ssh_cmd " root @ $ s "  " de $ PASS "  " rm -f ~ / .ssh / id_rsa, ssh-keygen -t rsa -P '' -f ~ /.
  ssh_cmd " root @ $ s "  " $ PASS "  " cat ~ / .ssh / id_rsa.pub "   >> ~ /. ssh / authorized_keys 
  
  echo  " DONE :: node esclave (s $) génère id_rsa.pub et envoyer au noeud maître ($ MASTER) "  
fait 
###### Copie collectioned authorized_keys à tous les nœuds. 
echo -e " \ n ######################### authorized_keys À TOUS ENVOI NODE ############## ########### " 
pour s dans $ {NŒUDS [@]}
 faire 
    écho -e "\ nstart :: nœud maître ($ MASTER) envoyer TOUS id_rsa.pub (authorized_keys) au noeud esclave ($ s) "     
    
    ssh_cmd " root @ s $ "  " $ PASS "  " echo '`cat ~ / .ssh / authorized_keys`' > ~ / .ssh / authorized_keys " 
    
    echo -e " DONE :: nœud maître ($ mASTER) envoyer TOUS id_rsa.pub (authorized_keys) au noeud esclave ($ s) \ n "    
done 
echo  " Complete! "
chomd + x ~ / sans mot de passe

usage

Utilisation Script:

~ / Sans mot de passe <password> <node1> <node2> <noeud ...>

Mot de passe: Tous les nœuds doivent être le même mot de passe.

Exemples spécifiques:

~ / sans mot de passe ' mypassword ' node1 node2 node3

Après l'exécution réussie, nous pouvons alors node1, entre le mot de passe sans node2.node3 connexion, et tel a été monté à bord node1, puis connectez-vous à node2, peut exécuter des commandes directement sur node1:

ssh node2

Il peut être.

Je suppose que tu aimes

Origine www.cnblogs.com/itbook-com/p/12539760.html
conseillé
Classement