Linux自动化互信配置脚本

背景说明:

我们在安装部署hadoop、kafka等集群环境时,往往需要在每个节点去配置ssh免秘钥登录的互信操作。如果集群节点非常多的情况,将会带来很大的工作量,因此开发一个自动化互信配置脚本就显得很有必要。

使用方式:

  • 前提,需要配置每个节点hostname和用户密码,用户密码必须相同,例如:

hostnamectl set-hostname hadoop01;echo ‘1qaz!QAZ’ | passwd --stdin root
hostnamectl set-hostname hadoop02;echo ‘1qaz!QAZ’ | passwd --stdin root
hostnamectl set-hostname hadoop03;echo ‘1qaz!QAZ’ | passwd --stdin root
hostnamectl set-hostname hadoop04;echo ‘1qaz!QAZ’ | passwd --stdin root
hostnamectl set-hostname schedule;echo ‘1qaz!QAZ’ | passwd --stdin root

  • 首先,将【传送脚本】和【自动化互信配置脚本】放到集群中的其中一个节点,
  • 其次,只需要配置一个节点(脚本所在节点)的/etc/hosts映射文件,
    例如:

192.168.1.28 hadoop01
192.168.1.29 hadoop02
192.168.1.30 hadoop03
192.168.1.31 hadoop04
192.168.1.32 schedule

  • 最后,只需要执行【传送脚本】即可,在配置第一个节点时需要输入三次密码,然后就可以执行整个过程。

传送脚本
将自动化互信脚本发布到各个节点并执行。

#!/bin/bash
# scp.sh
set -e
WORKDIR=`cd $(dirname $0);pwd`
HOSTS=(
hadoop01
hadoop02
hadoop03
hadoop04
schedule
)

for host in ${HOSTS[*]}
do
  echo "=========== start host: "$host " ===========";
  #若不存在为真,则创建;若不存在为假,则不创建
  set +e
  ssh -p 22 $host  "[[ ! -d $WORKDIR  ]] && mkdir -p $WORKDIR"
  set -e
  scp $WORKDIR/auto_mutual_trust.sh $USER@$host:$WORKDIR;
  scp /etc/hosts $USER@$host:/etc;
  ssh -p 22 $host  "sh $WORKDIR/auto_mutual_trust.sh"
done

自动化互信配置脚本

自动化互信配置脚本: 根据设置好的HOSTS,自动化的配置与所有的主机的互信。
#!/bin/bash
# auto_mutual_trust.sh
set -e
WORKDIR=`cd $(dirname $0);pwd`

USER=root
PWD="xxx"


HOSTS=(
hadoop01
hadoop02
hadoop03
hadoop04
schedule
)

#生产秘钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa;
yum -y install expect

#互信函数
function autoMutualTrust(){
  #ssh互信
  expect -c " 
  spawn ssh-copy-id -o StrictHostKeyChecking=no ${USER}@${1}
  expect \"password:\" 
  send \"${PWD}\r\"
  expect eof
  "
}

for host in ${HOSTS[*]}
do
  echo "trust host: "$host;
  autoMutualTrust $host;
done

其他场景互信脚本

#!/bin/bash
# auto_mutual_trust.sh
set -e

#互信函数
function autoMutualTrust(){
  #TMP_SCRIPT=tmp_script.sh
  #echo  "#!/usr/bin/expect">$TMP_SCRIPT 
  #echo  "spawn ssh-copy-id -o StrictHostKeyChecking=no $1@$(hostname)">>$TMP_SCRIPT 
  #echo  "expect *password: ">>$TMP_SCRIPT 
  #echo  "send  $1\r">>$TMP_SCRIPT 
  #echo  "expect eof ">>$TMP_SCRIPT 
  #chmod +x $TMP_SCRIPT 
  #/usr/bin/expect $TMP_SCRIPT 
  #rm $TMP_SCRIPT
  
  
  #同上,但更简洁
  expect -c " 
  spawn ssh-copy-id -o StrictHostKeyChecking=no ${1}@$(hostname)
  expect \"password:\" 
  send \"${1}\r\"
  expect eof
  "
  
}

#配置root用户本身的互信
echo root | passwd --stdin root 
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
autoMutualTrust root

#创建hive用户及配置hive用户本身的互信
useradd hive 
echo 'hive  ALL=(ALL)	NOPASSWD: ALL' >>/etc/sudoers 
sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers 
echo hive | passwd --stdin hive 
su - hive <<EOF
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa;

expect -c " 
spawn ssh-copy-id -o StrictHostKeyChecking=no hive@$(hostname)
expect \"password:\" 
send \"hive\r\"
expect eof
"
exit;
EOF

#配置root用户免密登录至hive用户的互信
autoMutualTrust hive

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值