批量設定ssh無密碼登陸指令碼
阿新 • • 發佈:2022-04-29
最近要給叢集設定ssh無密碼登陸,如果需要手動設定這個無密碼登陸,所以在網上找了幾個指令碼,親測下面這個好使,並且設定比較簡單。
需要用root賬戶執行,我也是要給root賬戶設定無密碼登陸。
首先我們要建立密碼,執行下面這句命令:
ssh-keygen -t rsa
指令碼如下:我們僅僅需要修改的就是node=()裡面的主機名就可以了,當前前提是你必須在/etc/hosts 配置了。
#!/bin/bash node=(hadoop.Master hadoop.SlaveT1 hadoop.SlaveT2) # hostname for each node username=root # username to be interconnected homename=$username # home dir, i.e. home/zhangyang if [ "$username" = "root" ]; then homename=root else homename=home/$username fi for((i=0; i<${#node[*]}; i++)) do ssh $username@${node[i]} 'ssh-keygen -t rsa; chmod 755 ~/.ssh' done #cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys echo "batch authorized_keys created..." echo "start scp..." #scp node003:/$homename/.ssh/authorized_keys /$homename/.ssh/node003.key for((i=0; i<${#node[*]}; i++)) do scp ${node[i]}:/$homename/.ssh/id_rsa.pub /$homename/.ssh/${node[i]}.key echo "scp from ${node[i]} finished..." done echo "append key to authorized_keys..." for((i=0; i<${#node[*]}; i++)) do cat /$homename/.ssh/${node[i]}.key >> /$homename/.ssh/authorized_keys echo "append ${node[i]}.key finished..." done echo "append all key finished..." loop=${#node[*]} let subloop=loop-1 echo "starting scp complete authorized_keys to ${node[1]}~${node[subloop]}" for((i=1; i<${#node[*]}; i++)) do scp /$homename/.ssh/authorized_keys ${node[i]}:/$homename/.ssh/authorized_keys echo "scp to ${node[i]} finished..." done echo "scp all nodes finished..." # delete intermediate files rm -rf /$homename/.ssh/*.key echo "all configuration finished..."
然後給指令碼授予執行的許可權 chmod +x batchSSH.sh
然後執行./batchSSh.sh
當然這個指令碼也有缺陷,它需要自己手動輸入密碼,如果節點多的話,還是很痛苦的,不過還好啦,比起自己手動搞的話,好多了,誰叫我不懂shell呢,哈哈!