局域网中服务器群配置ssh免密
笔者以前配置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免密相关推荐
- 关于Linux中批量配置SSH免密的一些笔记
写在前面 今天和小伙伴们分享批量配置SSH免密的一些笔记 传统的运维场景可以通过Ansible 等运维工具处理 在安装使用一些运维工具,比如Ansible,或则一些pass组件,需要配置ssh免密,s ...
- 本地mac配置ssh免密登录远程linux服务器
本地mac配置ssh免密登录远程linux服务器 每次输入密码登录服务器也就罢了,结果scp时每次都要输入密码,分分秒秒阿西吧.哈哈哈,回归正题,配置免密登录后,畅通无阻啊,哈哈哈 检查自己~/.ss ...
- ssh 免密_Linux下配置SSH免密通信 “sshkeygen”的基本用法
利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台. 1 什么是SSH 引用百度百科的说明:SSH 为 Secure She ...
- linux配置ssh免密码,Linux下配置SSH免密通信 - “ssh-keygen”的基本用法
一.什么是SSH 引用百度百科的说明: SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定:它是建立在应用层基础上的安全协议. S ...
- Ubuntu下VScode配置ssh免密远程登录
一 实现步骤 1.在本机与远程服务器上, 输入ssh-keygen -t rsa,然后连续回车直到结束 2.在本机上执行命令 ssh-copy-id 命令 (1).命令介绍 ssh-copy-id命令 ...
- 基于三台虚拟机配置ssh免密登陆
目录 一.前提准备 二.配置ssh免密登陆(Hadoop102,hadoop103,hadoop104) 三.配置三台免密登陆 一.前提准备 qian ti z bqian ti zqian tiqi ...
- linux 配置免密码登录,Linux - 配置SSH免密登录 - “ssh-keygen”的基本用法
1 什么是SSH 引用百度百科的说明: SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定:它是建立在应用层基础上的安全协议. S ...
- 如何配置ssh免密登录
ssh免密登录的创建和验证流程 在linux如何进行免密登录? 在生成环境中,我们可能会面临着只有一台机器有外网IP,而其它机器都是内网IP,如果我们需要频繁的操作内网的其它服务器,显然会非常不方便. ...
- 华为/华三交换机配置SSH免密登录
数据通信 - 建设篇 第二章 华为/华三交换机配置SSH免密登录 数据通信 - 建设篇 系列文章回顾 下章内容 华为/华三交换机配置SSH免密登录 背景介绍 实施步骤 堡垒机Linux后台使用ssh- ...
最新文章
- STM32中STD、HAL、LL库比较
- boost::graph模块实现资源受限最短路径算法的示例使用
- delphi 打印指定地点文件_2020年度电脑、打印机耗材及相关配件采购招标公告
- LeetCode198——house robber(不懂dp)
- 获取接口所有IPV6地址和前缀的方法
- dsh linux,通过dsh批量管理Linux服务器(一)【感谢作者的无私分享】
- 独立游戏佳作分享-001(FEZ、Braid、Super Meat Boy)
- 对讲机写频软件通用版_数字对讲机常规调频方法
- Revisiting Spatial-Temporal Similarity: A Deep Learning Framework for Traffic Prediction
- 图解多线程设计模式pdf_图解Java多线程设计模式 PDF 全书扫描版
- 【Spring常见错误】java.lang.NoClassDefFoundError: redis/clients/jedis/UnifiedJedis
- 集装箱编号校验码规则及java程序的实现
- Unity 滚球游戏
- 批量将所有图片的宽度和高度调整为固定的像素数值
- cobar mysql5.6_Cobar init error
- 对抗样本方向(Adversarial Examples)2018-2020年最新论文调研
- RemoteViews的作用和工作原理
- 使用xrc分离界面与代码
- python银行信贷风险分析_Lending Club贷款数据分析(python代码)
- 关于RDP协议的分析(一) - Linux论坛 - 计世网论坛 - Powered by Discuz!
热门文章
- 学NLP不懂这个项目?快别去秋招了,你HOLD不住的!
- 叙述计算机网络的分类与拓扑结构,计算机的网络中有线网络和无线网络最主要的区别是()。...
- java web相关试卷_JavaWeb试卷四
- pytorch中获取模型参数
- matlab 声明多个变量,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!...
- vs2015 html预览,Blend for Visual Studio 2015 预览版
- 你们身边有没有程序媛?
- marmalade android 5.0 JNI 调用失败的解决方案
- Linux 性能监测:介绍
- 支持Flash和JavaScript的图表控件FusionWidgets