批量配置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 ...
随机推荐
- SpringCloud学习6-如何创建一个服务消费者consumer
上一节如何创建一个服务提供者provider已经启动了一个provider的server,提供用户信息查询接口.接下来,我们启动另一个provider,由于是同一台机器本地测试,我们换一个端口 --s ...
- Nacos系列:Nacos的Java SDK使用
Maven依赖 Nacos提供完整的Java SDK,便于配置管理和服务发现及管理,以 Nacos-0.8.0 版本为例 添加Maven依赖: <dependency> <group ...
- TensorFlow中的通信机制——Rendezvous(二)gRPC传输
背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 本篇是TensorFlow通信机制系列的第二篇文章,主要梳理使用gRPC网络传 ...
- Apollo 8 — ConfigService 异步轮询接口的实现
源码 Apollo 长轮询的实现,是通过客户端轮询 /notifications/v2 接口实现的.具体代码在 com.ctrip.framework.apollo.configservice.con ...
- 【转载】C#防SQL注入过滤危险字符信息
不过是java开发还是C#开发或者PHP的开发中,都需要关注SQL注入攻击的安全性问题,为了保证客户端提交过来的数据不会产生SQL注入的风险,我们需要对接收的数据进行危险字符过滤来防范SQL注入攻击的 ...
- c#基础学习(0625)之vs常用快捷键、基础数据类型、命名规范
vs常用快捷键 Ctrl+K+D:快速对齐代码 Ctrl+z:撤销 Ctrl+S:保存 Ctrl+J:快速弹出只能提示 Shift+End:从行首快速选中整行 Shift+Home:从行未快速选中整行 ...
- Easyui input 取值跟赋值
var val = $("#id").textbox('getValue') //取值 $("#id").textbox('setValue','text') ...
- SQL 常用的判断、连表、跨库、去重、分组、ROW_NUMBER()分析函数SQL用法
常用的SQL 由浅入深 大致上回想一下自己常用的SQL,并做个记录,目标是实现可以通过在此页面查找到自己需要的SQL ,陆续补充 有不足之处,请提醒改正 首先我创建了两个库,每个库两张表.(工作 ...
- 【译】《Clean C#》
本文是<Clean C#>一书译文的序言,阅读译文请移步至:<Clean C#>译文. <Clean C#>的副标题是Readable,Maintainable,P ...
- Hibernate入门(六)---------HQL语句
Query: 代表面向对象的一个Hibernate查询操作.在Hibernate中,通常使用session.createQuery()方法接收一个HQL语句,然后调用Query的 list()或uni ...