Centos 集群配置SSH免登陆脚本
首先编写脚本生成集群服务器列表:
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免登陆脚本的更多相关文章
- hadoop集群配置SSH免登陆
今天给大家总结一下hadoop集群之间免登陆的步骤 node1 ssh node4 1.在node1中生成密钥 [root@node1 ~]# ssh-keygen -t dsa -P '' -f ~ ...
- 阿里云3台机器组成集群配置ssh免密码登陆
1 查询阿里云局网ip 注意:需要配置同一地区同一可用区的机器 才是一个局网 2 配置好hosts文件 3 hostname确认也是正确的 4 生成公钥私钥 三台机器同样操作 ssh-keygen - ...
- 二、集群配置SSH免密登录
一.以3个几点为例,分别为master.slave01.slave02 1.分别生成自己节点密钥对 master: 创建dsa免密代码:ssh-keygen -t dsa -P '' -f ~/.ss ...
- Linux2 在Linux(CentOS)上配置SSH免登陆
前言: 本文主要是我在安装hadoop之前,需要先配置SSH免登陆.通过网上搜索,发现不少类似的资料,但多少都有些小问题,所以结合自己的实践,记录在此,作为参考.如果能帮助到其他人,自然是更 ...
- CentOS 6.5配置SSH免密码登录
centos 系统对权限的设置非常微妙,如果权限设置大了则ssh 拒绝,如果权限小了,则ssh 更是被拒绝(我曾经配置好久没有打通,就是因为权限过大的原因) 参考链接:http://www.linux ...
- centos 6.5 配置ssh免登录
生成密匙: ssh-keygen -t rsa 会生成 id_rsa id_rsa.pub id_rsa:私匙 id_rsa.pub:公匙 配置当前机器免登录: cp id_rsa.pub auth ...
- Linux多个机器配置ssh免登陆
多机器ssh免密码登录的教程,网上有很多,多的数不过来,但是我的安装过程不是很顺利,因为刚开始使用的是普通的user,虽然配置了sudo权限,但是没有root权限,导致了无论如何配置都不能实现免密码登 ...
- Hadoop伪分布式集群实现SSH免密登录
在启动Hadoop时候报了这样一个错误: Starting namenodes on [hadoop] hadoop: (Permission denied (publickey,gssapi-key ...
- Centos下 自动化配置SSH免密码登陆
hosts文件,存储要部署的节点IP地址,其中以#开头表示注释掉 192.168.101.52 192.168.101.53 192.168.101.54 192.168.101.55 192.168 ...
随机推荐
- 微信redirect_uri 回调错误,scope权限错误
scope权限错误以及微信redirect_uri回调错误 昨天修改项目的时候,初始时,因为项目最开始使用的是第三方授权处理,拿到的用户openid是第三方账号的,所以需要将获取对方信息的代码修改.只 ...
- Android设计和开发系列第一篇:Notifications通知(Design)
Design篇 Notifications The notification system allows users to keep informed about relevant and timel ...
- django进阶-查询(适合GET4以上人群阅读)
前言: 下篇博客写关于bootstrap... 一.如何在脚本测试django from django.db import models class Blog(models.Model): name ...
- 字符串处理总结之一(C#String类)
C#(静态String类) C#中提供了比较全面的字符串处理方法,很多函数都进行了封装为我们的编程工作提供了很大的便利.System.String是最常用的字符串操作类,可以帮助开发者完成绝大部分的字 ...
- List的五种去重方式
//set集合去重,不改变原有的顺序 public static void pastLeep1(List<String> list){ System.out.println("l ...
- HR别掉坑里了,送你最精确的计薪算法!
月工资的计算方式有多种多样.即便是资深的HR,也会犯常识性的错误,正算反算,哪一个方法更适合,有时还会容易出现数字偏差,回想一下,你们公司的工资是如何计算的? 第一 劳动工资计算标准按几天计算 根 ...
- oAuth 认证和授权原理
什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密 ...
- 成员函数指针与高效C++委托 (delegate)
下载实例源代码 - 18.5 Kb 下载开发包库文件 - 18.6 Kb 概要 很遗憾, C++ 标准中没能提供面向对象的函数指针. 面向对象的函数指针也被称为闭包(closures) 或委托(del ...
- dhroid - ioc基础(@Inject*)
1 ioc即控制反转.控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心.控制反转还有一 ...
- postgresql----JSON类型和函数
postgresql支持两种json数据类型:json和jsonb,而两者唯一的区别在于效率,json是对输入的完整拷贝,使用时再去解析,所以它会保留输入的空格,重复键以及顺序等.而jsonb是解析输 ...