ssh免密码登录自动设置脚本 - IT书 - https://itbook.com/
2021-04-03 14:28
标签:use 脚本用法 int id_rsa style rsa author 执行 成功 原创链接:IT书 - itbook.com 一键式配置集群节点间免密码登录。前提是所有节点的密码是一致的! 脚本内容: 脚本用法: password:所有的节点必须是相同的密码。 具体用例: 执行成功后,就可以再node1,node2.node3之间免密码登录了,比如已经登上了node1,然后要登录node2,可直接在node1上执行命令: 即可。 ssh免密码登录自动设置脚本 - IT书 - https://itbook.com/ 标签:use 脚本用法 int id_rsa style rsa author 执行 成功 原文地址:https://www.cnblogs.com/itbook-com/p/12539760.html目的
实现
vim ~/nonpassword
#!/bin/sh
# all node names
NODES=()
# all node password
PASS=$1
###### Validation args length
nodes_length=$(($# - 1))
if [[ ss -gt 0 ]];then
echo "Exit: At least two parameters, eg: your_password, node1"
exit 2
fi
###### Get all node name
i=0
for node in $*
do
if [[ i -gt 0 ]]; then
j=$((i - 1))
NODES[j]=$node
fi
let i++
done
MASTER=`hostname`
yum -y install expect
###################################
function ssh_cmd0(){
user_and_host=$1
password=$2
cmd=$3
/usr/bin/expect EOF
set timeout 5
spawn ssh $user_and_host
expect {
"yes/no" { send "yes\r";exp_continue }
"password" { send "$password\r" }
}
expect "#"
send "$cmd\r"
expect "#"
exit 0
interact
EOF
}
function ssh_cmd(){
ssh_cmd0 "$1" "$2" "echo ‘start_mark‘;$3 ;echo ‘end_mark‘" | sed -n ‘/^start_mark/,/^end_mark/p‘|grep -Ev ‘(^start_mark|^end_mark)‘
}
###### Create all nodes authorized_keys, And collection to master.
echo "" > ~/.ssh/authorized_keys
echo "" > ~/.ssh/known_hosts
for s in ${NODES[@]}
do
echo -e "\nSTART:: Slave node ($s) generates id_rsa.pub and sends master node ($MASTER)"
ssh_cmd "root@$s" "$PASS" "rm -f ~/.ssh/id_rsa; ssh-keygen -t rsa -P ‘‘ -f ~/.ssh/id_rsa"
ssh_cmd "root@$s" "$PASS" "cat ~/.ssh/id_rsa.pub" >> ~/.ssh/authorized_keys
echo "DONE:: Slave node ($s) generates id_rsa.pub and send to master node ($MASTER)"
done
###### Copy collectioned authorized_keys to all nodes.
echo -e "\n######################### SENDING authorized_keys TO ALL NODE #########################"
for s in ${NODES[@]}
do
echo -e "\nSTART:: Master node ($MASTER) send ALL id_rsa.pub(authorized_keys) to slave node ($s)"
ssh_cmd "root@$s" "$PASS" "echo ‘`cat ~/.ssh/authorized_keys`‘ > ~/.ssh/authorized_keys"
echo -e "DONE:: Master node ($MASTER) send ALL id_rsa.pub(authorized_keys) to slave node ($s)\n"
done
echo "Complete!"
chomd +x ~/nonpassword
用法
~/nonpassword
~/nonpassword ‘mypassword‘ node1 node2 node3
ssh node2
文章标题:ssh免密码登录自动设置脚本 - IT书 - https://itbook.com/
文章链接:http://soscw.com/index.php/essay/71810.html