使用场景

比如我们在使用ansible批量部署大量服务器的时候,如果一台一台的服务器去分发密钥会很麻烦 所以用脚本实现批量部署免密登录就很现实了。下面的代码亲测成功
但是有一个缺点,缺点就是服务器的密码都是一致的,如果不是一致的,是不成功的。
这里用到了一个软件expect,expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect 自动交互流程:
spawn启动指定进程–expect获取指定关键字–send指定程序发送指定字符 --执行完退出。

expect常用命令总结:

spawn               交互程序开始后面跟命令或者指定程序
expect              获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send       用于发送指定的字符串信息
exp_continue        在expect中多次匹配就需要用到
send_user           用来打印输出 相当于shell中的echo
exit                退出expect脚本
eof                 expect执行结束 退出
set                 定义变量
puts                输出变量
set timeout         设置超时时间

ssh部署免密登录的具体脚本

#!/bin/bash
rpm -q expect
if [ $? -eq 0 ]; thenecho "已安装"
elseyum -y install expectif [ $? -eq 0 ]; thenecho "安装成功"elseecho "安装失败"fi
fi
#本机是否有ssh密钥 没有则生成
if [ ! -f ~/.ssh/id_rsa ]; thenecho "请按3次enter健"ssh-keygen -t rsa
fi
ssh_expect() {expect -c "set timeout -1;spawn ssh-copy-id  root@$1expect {"yes/no" { send -- yes\r;exp_continue;}"password:" { send -- $2\r;exp_continue;}eof }";
}[ -f hosts.txt ] && rm -rf hosts.txt#定义 hosts.txt
cat > hosts.txt << EOF10.0.0.4210.0.0.43
EOFpasswd=123456for ip in `cat hosts.txt|awk '{print $1}'`
dossh_expect ${ip} ${passwd}
done

————————————————
版权声明:本文为CSDN博主「chen豆豆鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46164213/article/details/103901670

ssh实现批量免密登录相关推荐

  1. SSH 用法进阶 —— 免密登录与端口转发

    ssh 是一个非常常用的工具,通常用来登录到远程主机上,不过 ssh 不仅仅只能用来登录,还能执行远程命令,或者进行多种的端口转发 基本使用 登录到远程主机 $ ssh <user>@&l ...

  2. [linux] redhat 7 ssh 安装配置免密登录

    安装ssh yum install openssh 查看端口 netstat -ntpl netstat -ntpl | grep :22 启动和关闭 service sshd restart/sta ...

  3. 深度解读SSH免密登录

    转载自公众号:未闻Code 我们都知道SSH是LINUX下很常用的命令,用来远程登陆其他的LINUX系统.如果只有一台,那也只是一个密码 ,也倒还好.但如果是一个集群,每次都输入密码登录,难免会拉低效 ...

  4. linux上ssh免密登录原理及实现

    因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录.关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理. scp 传输文件 scp( ...

  5. 华为/华三交换机配置SSH免密登录

    数据通信 - 建设篇 第二章 华为/华三交换机配置SSH免密登录 数据通信 - 建设篇 系列文章回顾 下章内容 华为/华三交换机配置SSH免密登录 背景介绍 实施步骤 堡垒机Linux后台使用ssh- ...

  6. 虚拟机SSH免密登录

    前言 本文利用虚拟机中已有的一台Linux系统,克隆出另一台完全一样的Linux系统,并实现两台虚拟机之间的免密登录.这其中涉及到:防火墙的关闭.本地的域名解析配置.公钥私钥的生成等过程. 一 使用虚 ...

  7. Ubuntu系统SSH免密登录,以及SSH免密登录原理

    我用的是Ubuntu 16.04系统,在搭建集群的时候开启集群每次都要输入好多的密码,太过于麻烦,用SSH免密登陆可以不用输入密码 SSH的基本介绍 简单说,SSH是一种网络协议,用于计算机之间的加密 ...

  8. linux中ssh免密登录,Linux之SSH免密登录

    Linux 双向 SSH 免密登录 原理 双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录.双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要 ...

  9. 【Linux】SSH免密登录配置

    SSH免密登录配置 前提:两用户已存在 用户A:user_a 用户B:user_b 先要求从user_a到用户user_b进行ssh和scp免密登录. 登录用户user_a 1. 检查/home/us ...

最新文章

  1. springboot自动装配原理笔记一
  2. python库pickle的用法
  3. 运行python程序ModuleNotFoundError?pip下载速度太慢?
  4. Doom 规律+大数
  5. Clojure 学习
  6. WebKit中的Chrome和ChromeClient
  7. yjk只算弹性的不计算弹塑性_材料本构弹塑性力学知识二
  8. 《iOS 9 开发指南》——第6章,第6.7节iOS 9控件的属性
  9. 10个问题让你快速避开java中的jdbc常见坑
  10. 绿屏后再现“粉屏”门!大量网友投诉iPhone 13粉屏问题 客服:非硬件问题
  11. pip下载 离线安装第三方包
  12. oracle里的ols机制,[Oracle] 数据库安全之 - Oracle标签安全(OLS)
  13. GN+NINJA环境搭建(MacOS Windows)
  14. Apollo(一)-基本介绍
  15. 利用python open-cv aimageio完成avi png mp4 gif间的转换
  16. 计算机全息图的制作与在线,计算机全息图
  17. 爬虫-截获http错误码(Python)
  18. 从技术出发 | 有孚网络吕鑫:生信海量数据管理的实践与探讨
  19. 查询本机IP及精确地理位置
  20. 随机生成手机短信验证码

热门文章

  1. 程序员电脑族喝什么茶对身体好?
  2. Java基础(二)——IDEA快捷键、类和对象、三大特征、构造方法、对象比较、抽象类、接口、模拟发红包
  3. 菜鸟学SSH——Spring容器AOP的实现原理——动态代理
  4. c++ 输入一个数字,判断能否被3、5、7整除,如果能被整除,输出能被哪些数字整除。
  5. css 网页自适应方案 大屏自适应方案
  6. 第三方物流伙伴联盟关系的博弈研究
  7. innovus2020安装
  8. Chrome浏览器取消输入框自动记忆下拉框历史记录
  9. 赛思互动:大数据能给企业带来什么
  10. Office EXCEL 表格如何设置某个单元格是选择项,如何设置一级下拉菜单