首先编写脚本生成集群服务器列表:

hostsList.sh

#!/bin/bash
preIp="11.11.225."
pwd="dyj2017"
for i in `seq 2 80`;
do
echo -e $preIp$i $pwd >> hostsLists.txt
done

hostsLists.txt

11.11.225.2 dyj2017
11.11.225.3 dyj2017
11.11.225.4 dyj2017
....
11.11.225.78 dyj2017
11.11.225.79 dyj2017
11.11.225.80 dyj2017

sshconfig.sh(CentOS 默认没有启动 ssh 无密登录,去掉 /etc/ssh/sshd_config 其中 2 行的注释,每台服务器都要设置)

#!/bin/bash
echo "读取ip列表中的IP和密码,并进行参数传递"
for row in `cat $1 | awk '{printf("%s:%s:%s\n"),$1,$2,$3}'`
do
ip=`echo ${row} | awk -F ':' '{print $1}'`
passwd=`echo ${row} | awk -F ':' '{print $2}'`
echo $ip
echo $passwd
echo "生成秘钥.........." /usr/bin/expect <<-EOF
spawn scp /etc/ssh/sshd_config cwgl@$ip:/home/cwgl/
expect {
"yes/no" { send "yes\r";exp_continue}
"password: " {send "$passwd\r";exp_continue}
}
exit
EOF /usr/bin/expect <<-EOF
spawn ssh cwgl@$ip
expect "password:"
send "$passwd\r"
expect "cwgl"
send "su - root\r"
expect "Password:"
send "$passwd\r"
expect "*#*"
send "mv -f /home/cwgl/sshd_config /etc/ssh/sshd_config\r"
expect "*#*"
send "systemctl restart sshd\r"
expect "*#*"
exit
EOF done
echo "SSH免密码操作完毕"

sshnoauth.sh(ssh免登陆)

#!/bin/bash
#说明:检查脚本所在服务器是否安装expect模块,生成IP列表中的秘钥
#将生成的秘钥id_rsa.pub传回当前服务器并标记,生成authorized_keys
#并分发到IP列表中的对应所有服务器
#使用方法:./script.sh filename
# ip列表中第一列为IP,第二列为IP对应的用户密码。列与列之间空格隔开
echo "执行检测并安装expect模块"
ep=`rpm -qa | grep expect`
if [ -z $ep ] ; then
echo "检测到当前服务器,没有安装expect模块,准备执行安装"
sleep 2
yum install -y expect
else
echo "当前服务器已经安装expect模块,3秒后,开始执行ssh文件同步"
sleep 3
fi
echo "读取ip列表中的IP和密码,并进行参数传递"
for row in `cat $1 | awk '{printf("%s:%s:%s\n"),$1,$2,$3}'`
do
ip=`echo ${row} | awk -F ':' '{print $1}'`
passwd=`echo ${row} | awk -F ':' '{print $2}'`
echo $ip
echo $passwd
echo "生成秘钥.........." /usr/bin/expect <<-EOF
spawn ssh root@$ip ssh-keygen -t rsa
expect {
"yes/no" { send "yes\r";exp_continue}
"password: " {send "$passwd\r";exp_continue}
"/root/.ssh/id_rsa" {send "\r";exp_continue}
"empty for no passphrase" {send "\r";exp_continue}
"again" {send "\r";exp_continue}
"Overwrite" {send "y\r";exp_continue}
}
exit
EOF
/usr/bin/expect <<-EOF
spawn scp root@$ip:/root/.ssh/id_rsa.pub /root/.ssh/id_rsa.pub$ip
expect {
"yes/no" { send "yes\r";exp_continue}
"password: " {send "$passwd\r";exp_continue}
}
EOF
done
#获取本地IP,删除重复秘钥
ip2=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
rm -rf /root/.ssh/id_rsa.pub$ip2
echo "完成获取本地IP,删除重复秘钥操作"
cat /root/.ssh/id_rsa.pub* >> /root/.ssh/authorized_keys
echo "authorized_keys生成完毕"
#scp authorized_keys 文件到各台机器上面。
for row in `cat $1 | awk '{printf("%s:%s:%s\n"),$1,$2,$3}'`
do
ip=`echo ${row} | awk -F ':' '{print $1}'`
passwd=`echo ${row} | awk -F ':' '{print $2}'`
echo "上传分发authorized_keys文件到"$ip"服务器"
/usr/bin/expect <<-EOF
spawn scp /root/.ssh/authorized_keys @$ip:/root/.ssh/
expect {
"yes/no" { send "yes\r";exp_continue}
"password: " {send "$passwd\r";exp_continue}
}
EOF
done
echo "SSH免密码操作完毕"

修改服务器配置文件(值为局部变量)

#!/bin/bash
for row in `cat $1 | awk '{printf("%s:%s\n"),$1,$2}'`
do
ip=`echo ${row} | awk -F ':' '{print $1}'`
echo -e $ip
/usr/bin/expect <<-EOF
spawn ssh root@$ip
expect "*#*"
send "echo -e $ip > /etc/mesos-slave/hostname\r"
expect "*#*"
exit
EOF done

  

Centos 集群配置SSH免登陆脚本的更多相关文章

  1. hadoop集群配置SSH免登陆

    今天给大家总结一下hadoop集群之间免登陆的步骤 node1 ssh node4 1.在node1中生成密钥 [root@node1 ~]# ssh-keygen -t dsa -P '' -f ~ ...

  2. 阿里云3台机器组成集群配置ssh免密码登陆

    1 查询阿里云局网ip 注意:需要配置同一地区同一可用区的机器 才是一个局网 2 配置好hosts文件 3 hostname确认也是正确的 4 生成公钥私钥 三台机器同样操作 ssh-keygen - ...

  3. 二、集群配置SSH免密登录

    一.以3个几点为例,分别为master.slave01.slave02 1.分别生成自己节点密钥对 master: 创建dsa免密代码:ssh-keygen -t dsa -P '' -f ~/.ss ...

  4. Linux2 在Linux(CentOS)上配置SSH免登陆

    前言:      本文主要是我在安装hadoop之前,需要先配置SSH免登陆.通过网上搜索,发现不少类似的资料,但多少都有些小问题,所以结合自己的实践,记录在此,作为参考.如果能帮助到其他人,自然是更 ...

  5. CentOS 6.5配置SSH免密码登录

    centos 系统对权限的设置非常微妙,如果权限设置大了则ssh 拒绝,如果权限小了,则ssh 更是被拒绝(我曾经配置好久没有打通,就是因为权限过大的原因) 参考链接:http://www.linux ...

  6. centos 6.5 配置ssh免登录

    生成密匙: ssh-keygen -t rsa 会生成 id_rsa  id_rsa.pub id_rsa:私匙 id_rsa.pub:公匙 配置当前机器免登录: cp id_rsa.pub auth ...

  7. Linux多个机器配置ssh免登陆

    多机器ssh免密码登录的教程,网上有很多,多的数不过来,但是我的安装过程不是很顺利,因为刚开始使用的是普通的user,虽然配置了sudo权限,但是没有root权限,导致了无论如何配置都不能实现免密码登 ...

  8. Hadoop伪分布式集群实现SSH免密登录

    在启动Hadoop时候报了这样一个错误: Starting namenodes on [hadoop] hadoop: (Permission denied (publickey,gssapi-key ...

  9. Centos下 自动化配置SSH免密码登陆

    hosts文件,存储要部署的节点IP地址,其中以#开头表示注释掉 192.168.101.52 192.168.101.53 192.168.101.54 192.168.101.55 192.168 ...

随机推荐

  1. 【python3】 django2.0 在生成数据库表时报错: TypeError: __init__() missing 1 required positional argument: 'on_delete'

    python: 3.6.4 django: 2.0 models.py 代码如下 # coding: utf-8 from django.db import models from django.co ...

  2. springbatch---->springbatch的使用(三)

    这里我们对上篇博客的例子做一个修改性的测试来学习一下springbatch的一些关于chunk的一些有用的特性.我渐渐能意会到,深刻并不等于接近事实. springbatch的学习 一.chunk的s ...

  3. echarts - 特殊需求实现方案汇总

    五分钟上手echarts echarts中 设置x||y轴文案.提示文字等为固定字数,超出显示"..." 关于echarts下钻功能的一些总结.js echarts - 特殊需求实 ...

  4. jQuery的一些静态方法

    // 该方法被绑定在jQuery对象上,只能通过$.noConflict()调用 noConflict: function( deep ) { // 取消$在window上的绑定,方法是将_$绑定到w ...

  5. Android.mk(5) 计算怎么办?

    https://www.jianshu.com/p/57c01e97c9b8 计算怎么办? 前面我们把Makefile做为一门语言的主要特性大致做了一个描述,它集合了目标式的模式和函数式的模式,还有大 ...

  6. linux下抓包学习--tcpdump的使用

    一.为什么需要学这个 很多时候,开发环境上不会出现问题.但在测试或者现场时,总是会有很多莫名其妙的问题. 这时候,能在出问题的环境上,开启抓包,然后再去重现问题的话,这时候,就可以拿到第一手的资料了. ...

  7. SOS does not support the current target architecture解决方法

    客户提交一个dump文件,WinDbg加载时出现大量WARNING,加载对应版本的SOS后执行相应命令提示"SOS does not support the current target a ...

  8. 【 转】__try,__except,__finally,__leave异常模型机制

    转自:http://blog.csdn.net/wwl33695/article/details/8686458 导读: 从本篇文章开始,将全面阐述__try,__except,__finally,_ ...

  9. 基于spring-cloud的微服务(1) 服务注册中心eureka

    eureka是Netflix提供的服务注册中心组建,springcloud将其做了封装,作为自己的微服务架构中的一个注册中心组建 下面的例子在IDEA中启动一个eureka的实例,然后提供一个prov ...

  10. 剑指offer题目记录

    1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(char* pData = NULL); CMyStri ...