shell互信腳本
#!/bin/sh
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;
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;
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的範圍必須連續,主機名的前綴必須相同,但對於搭建個小集羣,配置主機互信基本夠用了,當然歡迎大家一起討論,後面有時間在繼續更新完善。