一個配置集羣ssh互信的shell腳本

shell互信腳本


#!/bin/sh

## 1 delete .ssh directory
UserName="mongodb"
rm -rf ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa

startnode=7
endnode=7

for ((i=${startnode}; i<=${endnode}; i++));
do
        ssh  $UserName@node$i 'rm -rf ~/.ssh; ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "";exit '     
        ssh $UserName Node$i 'rm -rf ~/.ssh;ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "";exit'
done;

# 2 copy public keys to one file
#ssh $UserName@node1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
for ((i=${startnode}; i<=${endnode}; i++));
do
        ssh $UserName@node$i cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys    
        ssh $UserName@node$i cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
done;

# 3 Dispath authorized_keys to other machines and change file property
chmod 600 ~/.ssh/authorized_keys
for ((i=${startnode};i<=${endnode};i++));
do
        scp ~/.ssh/authorized_keys $UserName@node$i:~/.ssh/
        ssh $UserName@node$i 'chmod 600 ~/.ssh/authorized_keys'
done;

說明

  • 腳本執行的步驟
    • 第一步 在各個主機上生成key;
    • 第二步 將各個主機上的的公鑰拷貝到執行命令的主機的 authorized_keys中;
    • 第三步 將authorized_keys 分發到其他主機;
    • 第四步 修改authorized_keys的訪問權限爲600.
  • UserName對應的是主機名稱;
  • ssh-keygen -t rsa 和ssh-keygen -t dsa 產生兩種加密密鑰,當然也可以只使用其中一種;
  • startnode和endnode表示節點IP的範圍,如從192.168.2.150到192.168.2.159時,startnode=1, endnode=9,只需要在192.168.2.150的主機上執行該腳本即可;
  • ssh username@hostname cmd 登錄到遠程主機執行cmd命令,若需要執行多條命令,需要寫成,’cmd;cmd;cmd’
  • 該腳本目前的功能還比較弱小,如ip的範圍必須連續,主機名的前綴必須相同,但對於搭建個小集羣,配置主機互信基本夠用了,當然歡迎大家一起討論,後面有時間在繼續更新完善。
發佈了101 篇原創文章 · 獲贊 51 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章