华为云服务器centos7.2下全自动免密登陆配置

这5个小文件,全部搞定

1.ip.txt
#机群中所有的节点列表
192.168.1.105   node001
192.168.1.27    node002
192.168.1.168   node003


2.env.txt
#自己需要的环境变量
JAVA_HOME=/usr/local/src/app/jdk1.8.0_131
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
HADOOP_HOME=/usr/local/src/app/hadoop-2.8.1
SPARK_HOME=/usr/local/src/app/spark-2.2.0-bin-hadoop2.7
FLUME_HOME=/usr/local/src/app/apache-flume-1.7.0-bin
ZOOKEEPER_HOME=/usr/local/src/app/zookeeper-3.4.10
HBASE_HOME=/usr/local/src/app/hbase-1.2.6
HIVE_HOME=/usr/local/src/app/apache-hive-2.1.1-bin
KAFKA_HOME=/usr/local/src/app/kafka_2.12-0.11.0.0
STORM_HOME=/usr/local/src/app/apache-storm-1.1.1
PATH=$STORM_HOME/bin:$KAFKA_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin:$FLUME_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
export JAVA_HOME  PATH CLASSPATH  HADOOP_HOME  SPARK_HOME FLUME_HOME ZOOKEEPER_HOME HBASE_HOME HIVE_HOME KAFKA_HOME STORM_HOME

3.yes.txt
#在/etc/ssh/ssh_config文件最后,加上,抑制首次ssh访问yes/no的输入
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

4.every.sh
#!/bin/bash
#把主机映射拷贝到hosts文件
cat ~/ip.txt >> /etc/hosts
#如果环境变量没有配置好,把注释拿掉
#cat ~/env.txt >> /etc/profile 
#source /etc/profile
#如果没有配置好,把注释拿掉
#cat ~/yes.txt >>  /etc/ssh/ssh_config 
#systemctl restart sshd.service

5.only01.sh
#!/bin/bash
#以下操作必须在1号节点执行
#安装sshpass,可以指定密码,全自动实现的关键
yum install -y epel-release
#yum repolist
yum install -y sshpass

#把ip拷贝到hosts文件
sh ~/every.sh
#动态指定节点数目
num=$1

#生成密钥,收集公钥
for i in $( seq 1 $num )
do
    #在各个节点生成ssh密钥
   sshpass -p '3363018tiaN' ssh node00${i} "ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa"
   #拷贝各个节点公钥到node001,名字是p1,p2,...
   sshpass -p '3363018tiaN' scp root@node00${i}:~/.ssh/id_rsa.pub  ~/.ssh/p${i}
   #把所有的公钥拷贝到验证文件
   cat ~/.ssh/p${i} >>  ~/.ssh/authorized_keys
done


#派发公钥,有了公钥之后,就不需要密码登陆了
for i in $( seq 2 $num )
do
   sshpass -p '3363018tiaN' scp ~/.ssh/authorized_keys  root@node00${i}:~/.ssh
done
#-------------------下面的scp,ssh都不需要密码了----------------------------
#派发ip.txt,yes.txt...等等文件
for i in $( seq 2 $num )
do
   scp ~/* root@node00${i}:~/
done

#其它节点上hosts文件中加入主机列表
for i in $( seq 2 $num )
do
    ssh node00${i} "sh ~/every.sh"
    #把对应主机名改为node002,node003...
    ssh node00${i} "hostname node00${i}"
done

#更改node001
hostname node001

以上5个小文件,ip.txt,env.sh,every.sh根据自己的实际情况可以更改,only01.sh,yes.txt不需要更改
最后在1号节点上执行
num=你自己的机群节点数
sh only01.sh num

你可能感兴趣的:(华为云服务器centos7.2下全自动免密登陆配置)