笔者以前配置ssh免密登陆,基本两步就可以了, ssh-keygen删除密钥对, ssh-copy-id公钥复制到远程主机,完成密钥对部署。

但是笔者寻思,在服务器群里面怎么来配置ssh免密呢?生成密钥对,然后多次使用ssh-copy-id分发公钥吗?那未免太过于低效了。于是想着使用ssh-copy-id分发公钥时做个循环来解决,在网络上找到一个脚本可以实现这个功能。如下:

#!/bin/bashyum -y install sshpass &> /dev/nullUserName= usernameIPlist=(10.0.0.2 10.0.0.3 10.0.0.4 10.0.0.5 )#创建密钥对ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" &>/dev/null#分发公钥for i in ${IPlist[*]}dosshpass -p "123456" ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 -o StrictHostKeyChecking=no $UserName@$i &>/dev/nulldone

在第一次ssh登录时需要输入yes或者no来确认,设置StrictHostKeyChecking=no可以在第一次连接上不确认。另外还有到expect工具,详情请参考笔者以前的文章-Linux中expect工具完成远程交互通信。于是修改后的脚本如下,因条件受限未经测试。

#!/bin/bashyum -y install expect &> /dev/nullUserName= usernamepasswd='password'#服务器集群IP地址IPlist=(10.0.0.2 10.0.0.3 10.0.0.4 10.0.0.5)#创建密钥对,需要确定路径与密码(空),不然需要交互式ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" &>/dev/null#循环分发公钥#也可以定义文件从文件中读取#for i in  `cat /home/pi/HOSTid`for i in ${IPlist[*]}do/usr/bin/expect <<-EOFset time 10spawn ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 -o StrictHostKeyChecking=no $UserName@$i &>/dev/nullexpect {"*yes/no" { send "yes\r"; exp_continue }"*password:" { send "$passwd\r" }}expect eofEOFdone

在管理主机上 运行这个脚本就可以了。但是如果要服务器群两两配置ssh免密,笔者觉得可以将HOSTid里面写入全部的服务器IP地址,然后利用scp分发到各个服务器。上面的脚本读取HOSTid,但是在for循环里面要加个条件判断是不是本机ip地址,如果是就continue跳到下一次循环。比如:

f [ $i = `ifconfig  enp0s3 | head -n2 | grep inet | awk '{print$2}'` ]thenecho " This local machine !!!"continue;fi

网卡名需要写对,笔者centos是enp0s3,当然ifconfig工具也要有。

在每台服务器上需要运行这个脚本,笔者取名叫allssh_key.sh。那还可以继续优化一下,可以利用笔者以前文章“Linux中expect工具完成远程交互通信(2)”中的auto_cmd.sh(脚本需要将本机判断后修改为直接执行allssh_key.sh脚本)来完成服务器群的密钥对的部署。

./auto_cmd.sh  /home/username/shell/allssh_key.sh

参考链接 :

局域网中服务器群配置ssh免密

https://www.jianshu.com/p/c90cfa599e74

局域网中服务器群配置ssh免密相关推荐

  1. 关于Linux中批量配置SSH免密的一些笔记

    写在前面 今天和小伙伴们分享批量配置SSH免密的一些笔记 传统的运维场景可以通过Ansible 等运维工具处理 在安装使用一些运维工具,比如Ansible,或则一些pass组件,需要配置ssh免密,s ...

  2. 本地mac配置ssh免密登录远程linux服务器

    本地mac配置ssh免密登录远程linux服务器 每次输入密码登录服务器也就罢了,结果scp时每次都要输入密码,分分秒秒阿西吧.哈哈哈,回归正题,配置免密登录后,畅通无阻啊,哈哈哈 检查自己~/.ss ...

  3. ssh 免密_Linux下配置SSH免密通信 “sshkeygen”的基本用法

    利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台. 1 什么是SSH 引用百度百科的说明:SSH 为 Secure She ...

  4. linux配置ssh免密码,Linux下配置SSH免密通信 - “ssh-keygen”的基本用法

    一.什么是SSH 引用百度百科的说明: SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定:它是建立在应用层基础上的安全协议. S ...

  5. Ubuntu下VScode配置ssh免密远程登录

    一 实现步骤 1.在本机与远程服务器上, 输入ssh-keygen -t rsa,然后连续回车直到结束 2.在本机上执行命令 ssh-copy-id 命令 (1).命令介绍 ssh-copy-id命令 ...

  6. 基于三台虚拟机配置ssh免密登陆

    目录 一.前提准备 二.配置ssh免密登陆(Hadoop102,hadoop103,hadoop104) 三.配置三台免密登陆 一.前提准备 qian ti z bqian ti zqian tiqi ...

  7. linux 配置免密码登录,Linux - 配置SSH免密登录 - “ssh-keygen”的基本用法

    1 什么是SSH 引用百度百科的说明: SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定:它是建立在应用层基础上的安全协议. S ...

  8. 如何配置ssh免密登录

    ssh免密登录的创建和验证流程 在linux如何进行免密登录? 在生成环境中,我们可能会面临着只有一台机器有外网IP,而其它机器都是内网IP,如果我们需要频繁的操作内网的其它服务器,显然会非常不方便. ...

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

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

最新文章

  1. STM32中STD、HAL、LL库比较
  2. boost::graph模块实现资源受限最短路径算法的示例使用
  3. delphi 打印指定地点文件_2020年度电脑、打印机耗材及相关配件采购招标公告
  4. LeetCode198——house robber(不懂dp)
  5. 获取接口所有IPV6地址和前缀的方法
  6. dsh linux,通过dsh批量管理Linux服务器(一)【感谢作者的无私分享】
  7. 独立游戏佳作分享-001(FEZ、Braid、Super Meat Boy)
  8. 对讲机写频软件通用版_数字对讲机常规调频方法
  9. Revisiting Spatial-Temporal Similarity: A Deep Learning Framework for Traffic Prediction
  10. 图解多线程设计模式pdf_图解Java多线程设计模式 PDF 全书扫描版
  11. 【Spring常见错误】java.lang.NoClassDefFoundError: redis/clients/jedis/UnifiedJedis
  12. 集装箱编号校验码规则及java程序的实现
  13. Unity 滚球游戏
  14. 批量将所有图片的宽度和高度调整为固定的像素数值
  15. cobar mysql5.6_Cobar init error
  16. 对抗样本方向(Adversarial Examples)2018-2020年最新论文调研
  17. RemoteViews的作用和工作原理
  18. 使用xrc分离界面与代码
  19. python银行信贷风险分析_Lending Club贷款数据分析(python代码)
  20. 关于RDP协议的分析(一) - Linux论坛 - 计世网论坛 - Powered by Discuz!

热门文章

  1. 学NLP不懂这个项目?快别去秋招了,你HOLD不住的!
  2. 叙述计算机网络的分类与拓扑结构,计算机的网络中有线网络和无线网络最主要的区别是()。...
  3. java web相关试卷_JavaWeb试卷四
  4. pytorch中获取模型参数
  5. matlab 声明多个变量,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!...
  6. vs2015 html预览,Blend for Visual Studio 2015 预览版
  7. 你们身边有没有程序媛?
  8. marmalade android 5.0 JNI 调用失败的解决方案
  9. Linux 性能监测:介绍
  10. 支持Flash和JavaScript的图表控件FusionWidgets