歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

批量部署ssh認證

批量部署ssh認證        我想,當搭建hadoop集群的時候大家都會碰到一個問題,手動配置ssh雙向認證,當集群規模很小時候還能忍受,但是假如配置幾十台乃至上百台節點的時候難道也要手動配置嗎?       所以推薦用腳本來批量解決這個問題,網絡上有不少相關解答,但都不太好用,在此從新記錄下。    1,安裝所需要的rpm包,tcl-8.4.13-3.ML5.x86_64.rpm,expect-5.43.0-8.el5.x86_64.rpm,我用的linux為redhat6.1 x86_64,經測試沒有問題   2,腳本代碼  Java代碼   #!/bin/bash     #2013-09    #創建本地公鑰   if [ ! -d /root/.ssh ];then   expect -c "   spawn ssh-keygen -t dsa       expect {           \"*key*\" {send \"\r\"; exp_continue}                      \"*passphrase*\" {send \"\r\"; exp_continue}                      \"*again*\" {send \"\r\";}          }   "   fi      ssh-add   ~/.ssh/id_dsa #需要手動加載下私鑰      #批量ssh認證建立     for p in $(cat /root/ip.txt)  #注意ip.txt文件的絕對路徑      do      ip=$(echo "$p"|cut -f1 -d":")       #取ip.txt文件中的ip地址     password=$(echo "$p"|cut -f2 -d":") #取ip.txt文件中的密碼          #expect自動交互開始     expect -c "      spawn ssh-copy-id -i /root/.ssh/id_dsa.pub root@$ip             expect {                      \"*yes/no*\" {send \"yes\r\"; exp_continue}                      \"*password*\" {send \"$password\r\"; exp_continue}                      \"*Password*\" {send \"$password\r\";}              }      "         ssh root@$ip '/root/slave_master.sh'  #調用遠程腳本      done       3,ip.txt  需要部署的ip+密碼  Java代碼   10.185.224.105:123456   10.185.224.104:123456   10.185.224.103:123456       4,說明  對於遠程節點上的腳本和本機腳本無太多區別,再部署之前需要用腳本把遠程腳本拷貝好
Copyright © Linux教程網 All Rights Reserved