批量配置SSH互信脚本
Ps: 关于SSH密钥验证
- 私钥,ssh-keygen生成的私钥,与公钥成对
- 公钥,ssh-keygen生成的共钥,与私钥成对
- authorized_keys,存储已有的公钥,每当有客户端来访问服务器,服务器都会在此文件中找到对应客户端user的的公钥,与其出示的私钥进行验证,如果成功那么允许那个用户登录。
- known_hosts,每次新访问一个服务器,都会把这个新服务器发来公钥记入此文件(建立SSH连接前server会把公钥发给客户端),其作用是在二次访问此server时证明此server不是什么伪造的server而是你以前访问过的那个server(如果server IP变动或者重装了ssh,公钥是会变的)。
在大规模自动化部署时我们常常需要配置好服务器的SSH互信,以便自动化脚本可以免密登录远程服务器,常规的手动配置SSH互信步骤如下:
- 使用ssh-keygen生成本地ssh key(mha01),生成的文件如下:

- cp .ssh/id_rsa.pub .ssh/authorized_keys
- 将.ssh内容全部拷贝至远程服务器mha02,在正式拷贝之前会把远程服务器加到.ssh/known_hosts文件中然后再拷贝。
#!/usr/bin/expect
#此脚本需配合ip.list文件使用,ip.list文件存储所有服务器IP,包含本地服务器。
#此脚本需要和ip.list一起放置在用户~/目录下才能执行。
set passwd xxx --设置服务器密码变量,需要所有服务器上要配置ssh互信的用户的密码全部一致。
spawn ssh-keygen
expect {
"id_rsa" {send "\r";exp_continue}
"Overwrite" {send "y\r";exp_continue}
"phrase" {send "\r";exp_continue}
"again" {send "\r";exp_continue}
}
#需要注意的是路径不能以~开头,因此要么写成绝对路径要么写成相对路径,绝对不能用~/来表示家目录。但是如果是$ip:~/却可以,奇坑无比。
spawn cp .ssh/id_rsa.pub .ssh/authorized_keys --这可也可以写成spawn cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
set hosts [open ip.list r]
while { [gets $hosts ip]>=0} {
spawn scp -r .ssh/ $ip:~/ --这里也可以写成spawn scp -r /root/.ssh/ $ip:/root/
expect {
"yes/no" {send "yes\r";exp_continue}
"password:" {send "$passwd\r";exp_continue}
}
}
close $hosts
批量配置SSH互信脚本的更多相关文章
- Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)
按照集团运维信息安全制度, 需要每个一段时间对线上服务器密码进行一次变更,通过shell脚本部署比较繁琐,所以决定采用ansible脚本对远程主机root密码进行批量重置,该脚本已经在稳定运行在正式环 ...
- linux配置ssh互信
公钥认证的基本思想: 对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在欲登录的服务器上,而private key为特 ...
- 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本
20181225-Linux Shell Bash环境下自动化创建ssh互信脚本 1. 我的Blog 博客园 https://www.cnblogs.com/piggybaba/ 个人网站 http: ...
- 【Linux】ssh互信脚本
使用互信脚本的时候,需要敲回车,但是shell脚本无法满足,所以需要用到expect脚本 rpm -qa | grep expect 如果没有的话,直接用yum安装即可 yum install exp ...
- 配置ssh互信的一个小问题记录
在我们安装集群软件时,经常需要配置机器之间的互信,每个人也有一套自己熟悉的方法. 但是在今天配置互信过程中,发现操作过程还是一样,但是就是不能互信,通过查找资料解决了,做一下记录. 我经常使用的方式: ...
- Linux之间配置SSH互信(SSH免密码登录)
为简化SSH过程,采用证书方式,免去SSH登入时需要输入账号密码的过程,具体操作如下: 一.在SSH服务器所在机器上 1.以root用户登录,更改ssh配置文件 /etc/ssh/sshd_confi ...
- 配置ssh互信
配置基于密钥认证的免密登录 用到的命令: ssh-keygen:创建公钥和密钥,会生成id_rsa和id_rsa.pub两个文件 生成ssh密钥后,密钥将默认存储在家目录下的.ssh/目录中.私钥和公 ...
- 批量配置SSH 免密钥登录脚本
[root@c3-zabbix-serv hurl]# cat sendsshkey.sh #!/bin/bash if [ -z $1 ]; then echo "Usage : ...
- Linux快速配置集群ssh互信
之前在<记录一则Linux SSH的互信配置过程>.<Vertica 7.1安装最佳实践(RHEL6.4)>中,都分别提到了配置ssh互信的方法,本文在此基础上进一步整理配置s ...
随机推荐
- #19 re&jieba模块
前言 在Python中,需要对字符串进行大量的操作,有时需要从一个字符串中提取到特定的信息,用切片肯定是不行的,所有这一节记录两个强大的文本处理模块,一个是正则表达式re模块,另一个是中文处理模块ji ...
- Web笔记(二)Tomcat 使用总结
Tomcat 介绍 Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaSe ...
- WebSocket+Java 私聊、群聊实例
前言 之前写毕业设计的时候就想加上聊天系统,当时已经用ajax长轮询实现了一个(还不懂什么是轮询机制的,猛戳这里:https://www.cnblogs.com/hoojo/p/longPolling ...
- Zookeeper(一) —— 环境搭建
一.概述 集中式 向 分布式演变,高并发.海量存储 应用场景: * 数据发布.订阅的两种方式:推模式.拉模式 * 命名服务 * 分布式协调/通知(心跳检测) * 负载均衡 自增长id和uuid的缺点, ...
- jquery获取checkbox是否选择的值
//是否被选中验证有选中的设置为true,否设置为false function myCheckbox() { flag += 1; if (flag%2 == 0){ $('#isSelf').att ...
- [转]What is Blue Prism?
本文转自:https://www.guru99.com/blue-prism-tutorial.html#5 What is Blue Prism? Blue Prism is a UK-based ...
- T-SQL :SQL Server系统数据库(二)
master:master数据库储存实例范围的元数据信息,服务器配置,实例中的所有数据库信息和初始化信息. Resource:Resource数据库是一个隐藏,只读数据库,存储所有系统对象的定义.当查 ...
- Echarts3.0 引入百度地图(转载)
转载来源: https://blog.csdn.net/yc_1993/article/details/52431989 Echarts3.0引入百度地图 update: 由于目前echarts3.8 ...
- UWP: 妙用自定义 Action 以简化并重用代码
相信每一位 App 开发者,在开发过程中,都会有一些代码被反复用到,比如:复制文本,打电话,发短信,发邮件,给应用添加评论等等.在项目之间复制这些代码段,实在不是一个好办法,所以大家可能会把这些代码放 ...
- [nodejs] nodejs开发个人博客(七)后台登陆
定义后台路径 访问这个路径进入后台页面 http://localhost:8888/admin/login 在后台路由控制器里面(/admin/index.js)调用登陆控制器(/admin/logi ...