批量配置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 ...
随机推荐
- Centos7搭建邮件服务器-Postfix+Cyrus-sasl+Courier-authlib+Dovecot+ExtMail+Centos7
1.环境介绍 MTA: Postfix 3.1.4 SASL: Cyrus-sasl 2.1.26 ; Courier-authlib 0.66.1(Cyrus-sasl使用Courier-authl ...
- 监控报I/O问题,怎么办?
Linux系统出现了性能问题,一般我们可以通过top.iostat.free.vmstat等命令来查看初步定位问题.其中iostat可以给我们提供丰富的IO状态数据. 一.查询命令基本使用 1.命令介 ...
- spring面试问题与答案集锦
我收集了一些spring面试的问题,这些问题可能会在下一次技术面试中遇到.对于其他spring模块,我将单独分享面试问题和答案. 如果你能将在以前面试中碰到的,且你认为这些应该是一个有spring经验 ...
- 监控 | open-falcon | 安装
监控 | open-falcon | 安装 1. 简介 主要看中了它的水平扩展,画图比zabbix要友好,告警支持简单压缩. 绿色:基础组件: 蓝色:作图链路 红色:报警链路 橙色:域名 架构 1.1 ...
- Perl分片技术
分片(slice) 在perl中,如果想要取得一部分变量.一部分列表内容.一部分hash内容,可以采用分片(切片)的方式. 注意,perl并未提供字符串的切片方式,但可以使用内置函数substr()来 ...
- μC/OS-II 任务就绪表及任务调度
任务调度 多任务操作系统的核心工作就是任务调度. 所谓调度,就是通过一个算法在多个任务中确定该运行的任务,做这项工作的函数就叫做调度器. μC/OS-II 进行任务调度的思想是 "近似地每时 ...
- C# 显式转换关键字 explicit
不同于隐式转换,显式转换运算符必须通过转换的方式来调用. 如果转换操作会导致异常或丢失信息,则应将其标记为 explicit. 这可阻止编译器静默调用可能产生意外后果的转换操作. 省略转换将导致编译时 ...
- WPF里ItemsControl的分组实现 --listbox 实现分组
我们在用到ItemsControl时,有时会用到分组,如ListBox,ListView,DataGrid.WPF的ItemsControl可以实现分组,是依托于GroupStyle,以ListBox ...
- 【WebSocket No.3】使用WebSocket协议来做服务器
写在开始 上面一篇写了一篇使用WebSocket做客户端,然后服务端是socke代码实现的.传送门:webSocket和Socket实现聊天群发 本来我是打算写到一章上的,毕竟实现的都是一样的功能,后 ...
- oracle 查询表中重复数据
select * from tablename where id in (select id from tablename group by id having count(id) > 1)