您現在的位置是:首頁 > 遊戲
Linux多臺機器一鍵免密互信指令碼(基礎版本)
rf怎麼在本地迴圈跑
大家好,我是anyux。本文介紹Linux多臺機器一鍵免密互信指令碼(基礎版本)。
因為很多操作工具構架需要免金鑰互信的基礎才能實現,比如hadoop,MHA等,本人十分懶惰,不想因為反覆克隆機器後,再搞複製貼上的操作。從昨天晚上11點還完成,氣得直接睡覺去了。
白天來公司,正巧無事(一會做完了),上手就開始完成這個指令碼。
心急的同學,可以直接替換head_ip(字首ip),arr(字尾ip),passwd(密碼),以root許可權直接執行
這個版本是很基礎的小指令碼,就跟鬧著玩一樣。
它的不足,
依賴第三工具,並且需要以root許可權安裝,執行
ip限制,需要手動修改
同步金鑰的演算法未最佳化,感覺可以最佳化,雖然還不知道最佳化的空間有多少
再說說它的實現邏輯
這裡的前提,是所有同步金鑰機器的密碼一致(不一致的要等待下一個版本更新吧)
隨機一臺機器登入,生成金鑰對,複製公鑰到其他主機認證
基於迴圈,逐個遠端登入主機,刪除金鑰對,重新生金鑰對
基於迴圈,逐個遠端登入主機,安裝遠端工具sshpass,複製公鑰到其他機器,還有本地主機localhost
檢測多主機免密通訊情況
#!/bin/bash
#演算法金鑰
#分發給指定機器
#ip_header
head_ip=‘192。168。255。’
#ip_footer
arr=(113 114 115)
#使用者家金鑰目錄
base_dir=~/。ssh/
#公鑰
pub=id_rsa。pub
#私鑰
key=id_rsa
#使用者名稱稱
user=root
#使用者密碼
passwd=root
#需要root許可權安裝軟體
install_cmd(){
yum install -y pssh sshpass
}
create_key()
{
sleep 2
#刪除本地初始金鑰對
rm -rf ${base_dir}
sleep 1
echo -e “刪除完成\n”
echo “開始分發”
echo “\n”
echo “++++++++++++++++++++”
#本地主機生成金鑰
\ssh-keygen -t rsa -f ${base_dir}${key} -P “”
for ip in ${arr[@]}
do
echo “輸出ip**********”
echo “ssh root@${head_ip}${ip} ”
tmp=‘ssh-keygen -t rsa -f ${base_dir}${key} -P “”’
#本地主機公鑰複製到其他主機認證檔案
sshpass -p${passwd} ssh-copy-id $user@${head_ip}${ip} -o StrictHostKeyChecking=no
#遠端主機連線,刪除已生成的金鑰,並重新生成金鑰
sshpass -p${passwd} ssh $user@${head_ip}${ip} “rm -rf ${base_dir}${key};rm -rf ${base_dir}{pub}”
#遠端主機連線,生成金鑰
sshpass -p${passwd} ssh $user@${head_ip}${ip} “ssh-keygen -t rsa -f ${base_dir}${key} -P ‘’”
#遠端主機連線,將公鑰複製到其他主機認證檔案
for tmp_ip in ${arr[@]}
do
#安裝遠端連線工具
sshpass -p${passwd} ssh $user@${head_ip}${ip} “yum install -y sshpass;”
#遠端主機,將公鑰同步到其他機器
sshpass -p${passwd} ssh $user@${head_ip}${ip} “sshpass -p${passwd} ssh-copy-id $user@${head_ip}${tmp_ip} -o StrictHostKeyChecking=no”
#遠端主機,將公鑰同步localhost主機名下
sshpass -p${passwd} ssh $user@${head_ip}${ip} “sshpass -p${passwd} ssh-copy-id $user@localhost -o StrictHostKeyChecking=no”
done
done
echo -e “分發完結\n”
}
check_ip(){
for ip in ${arr[@]}
do
pssh -H ${head_ip}${ip} -i $1
done
}
bat()
{
echo “輸出ok:”;
check_ip ‘echo “ok”’
echo “輸出ping結果:”;
check_ip ‘ping qq。com -c 2’
echo “獲取主機名:”;
check_ip ‘ls ~/。ssh’
echo “獲取主機名:”;
check_ip “source /etc/profile;ip a | grep inet | grep ${head_ip}”
}
main(){
install_cmd;
create_key;
bat
}
main
推薦文章
- 從小米MIUI換成華為EMUI,深度體驗1個月,憋了一肚子心裡話
2、功能性小米MIUI和華為EMUI作為國內最大的兩個定製系統,在功能數量方面,消費者所有使用需求,兩家廠商幾乎全部都可以滿足...
- 只因家庭條件好於夫家,妻子在家過於強勢,丈夫攜兒子與妻子翻臉
張玲萬回到孃家後,張成海為了給女兒出氣,曾上門砸了女婿家,還說陳武順的兒媳在外有問題,陳武順氣不過,只能跑到張家再砸回去...
- 香蕉不是含鉀最多的食物,這種食物才是含鉀冠軍,適合口味重的人
芋頭是我們吃火鍋或者酸菜魚的時候最喜歡新增的食物,其外皮爽口裡面又軟糯的口感特別受人喜歡,味道也特別的香...