Linux批量免密码SSH登录案例_众元网络百哥的博客-程序员宅基地

技术标签: 运维  shell  linux  云端  ssh  

一、为什么要免密码登录Linux系统

1、日常使用更方便(不是主要原因)

2、通过ansible等自动化运维工具,批量管理多台服务器,那么控制节点需要免密登录各个被控主机。

2、云环境中实现自动化扩展节点,如openstack控制节点自动部署计算节点。

 

二、怎么实现Linux免密登录SSH

通过两种方法实现,服务器数量少可以手动配置,数量多可以使用shell脚本批量配置。

1、手动配置

实验环境:

server01,ip 192.168.0.201

server02,ip 192.168.0.202

实现server01可以免密登录server02

步骤一:server01创建密钥,使用rsa作为加密算法,后续参数可以一路回车。

什么是密钥?我们的手机可以通过输入密码来解锁,也可以通过指纹来解锁,这里的密钥相当于指纹,我们要让各个目标主机有我们的指纹,这样以后就不需要输入密码了。

[root@server01 ~]# ssh-keygen -t rsa

步骤二:将密钥文件拷贝到目标主机,这里使用ssh-copy-id工具,而不用手动scp,因为使用工具可以自动配置好目标主机相关目录的权限(也就是存储密钥的目录)

[root@server01 ~]# ssh-copy-id -i [email protected]

这里需要输入一次密码(屏幕不显示),以后就可以免密登录了,因为第一次通过ssh传递key文件,是需要输入密码的。

步骤三:进行免密登录测试

[root@server01 ~]# ssh [email protected]
Last login: Tue Mar 24 21:21:33 2020 from 192.168.0.3
[root@server02 ~]# 

成功实现免密登录

 

2、自动配置

如果需要配置的主机比较多,每个都手动配置效率太低,而且操作繁琐,可以使用shell脚本进行批量配置

实验环境

server01,ip 192.168.0.201

server03,ip 192.168.0.172

server04,ip 192.168.0.273

使用shell脚本实现server01免密登录server03和server04

步骤一:安装expect

因为在免密配置时,首先要拷贝密钥文件到各个目标主机,需要输入目标主机的ip,用户名,密码,以及确认一个yes/no,这些繁琐而重复的工作,当然要自动完成

安装expect可以当屏幕出现相应提示时,自动帮我们输入相应的字符。

当出现yes/no选择时,自动输入yes并继续

当出现password提示时,自动输入各个主机的密码并继续

[root@server01 ~]# yum install expect -y
[root@server01 ~]# rpm -q expect
expect-5.45-14.el7_1.x86_64

 

步骤二:准备好主机信息的文件,这里每行分别输入主机ip,用户名,密码,当然也可以自动生成。

自动生成主机信息文件,可参考https://blog.csdn.net/weixin_46736340/article/details/105307703

[root@server01 ~]# cat host.txt 
192.168.0.172 root 123456
192.168.0.173 root 123456

 

步骤三:编写自动化配置脚本

#!/bin/bash
# FileName:             test.sh
# Revision:             1.0
# Date:                 2020-03-25
# Author:               baige
# Description:          the script for auto-ssh-login 
while read host;do
        ip=`echo $host | cut -d " " -f1`
        username=`echo $host | cut -d " " -f2`
        password=`echo $host | cut -d " " -f3`
expect <<EOF
        spawn ssh-copy-id -i $username@$ip
        expect {
                "yes/no" {send "yes\n";exp_continue}
                "password" {send "$password\n"}
        }
        expect eof
EOF
done < /root/host.txt

 

步骤四:赋权并执行脚本

[root@server01 ~]# chmod +x test.sh 
[root@server01 ~]# . test.sh 

可看到提示,成功copy了密钥文件

步骤五:测试,成功,均不需要输入密码

[root@server01 ~]# ssh 192.168.0.172
Last login: Wed Mar 25 17:00:08 2020 from 192.168.0.201
[root@server03 ~]# exit
logout
Connection to 192.168.0.172 closed.
[root@server01 ~]# ssh 192.168.0.173
Last login: Wed Mar 25 17:00:12 2020 from 192.168.0.201
[root@server04 ~]# 

 

点击了解更多技术资料和免费学习视频请加入讨论群:662736393
欢迎关注百哥IT技术专栏,联系QQ:1443262302
针对本技术点问题,欢迎加Q一起讨论学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46736340/article/details/105307779

智能推荐

金融科技B端市场群雄争霸 PATH四家各出奇招_chizhui4302的博客-程序员宅基地

近日,PATH或将取代BAT的讨论甚嚣尘上,这个事关中国科技公司最新排位的“名词”牵动着众多目光。有学者指出, PATH所代表的四家公司,即中国平安(P)、阿里巴巴(A)、腾讯(T)和华为(H),是中国当今最具创新力和引领性的世界级公司,也是能与美国顶尖科技公司(如谷歌、脸书和亚马逊)比肩的企..._贷款 微表情 面审

python控制 鼠标移动 pyautogui || PyMouse 自动化_pymouse库按住鼠标从a点移动至b点_远方的李子的博客-程序员宅基地

python控制 鼠标移动 pyautogui || PyMouse 自动化方法1 pyautogui安装 ·pip install pyautogui文档基本操作指令gui.PAUSE=0.5 #每次函数调用后暂停0.5秒gui.FAILSAFE=True #启动自动防故障功能注意,这里将pyautogui库重命名为gui,是为了使用方便。这个库可以处理电脑屏幕、鼠标、键盘等..._pymouse库按住鼠标从a点移动至b点

input取消焦点 vue_vue 表单输入框不支持focus及blur事件的解决方案-程序员宅基地

采用指令的方式来解决这个问题(此处的前端框架以mint-ui为例):1.html引用: v-mtfocus2.在实例中添加指令directives: {'mtfocus' (el, binding, vnode) {let mtinput = el.querySelector('input')mtinput.onfocus = function () {...//如果要对节点的数据进行更改,且更改..._input取消聚焦

科天云服务慧科教育在线教育突围之道_慧科教育用什么软件教学_weixin_42059623的博客-程序员宅基地

据机构预测,2020年职业教育的总体市场规模预测将有11077亿,其中学历教育为1900亿,非学历教育达到9100亿。在近万亿的职业教育市场中,慧科教育是中国高等教育领域唯一超过10亿美元估值的独角兽企业。慧科集团成立于2010年,旗下拥有慧科教育、高校邦、开课吧、慧科培优、等品牌。其中,“开课吧”月营收在2019年突破5000万元。面向成人,在线教育平台建设是慧科集团一项重要内容。在慧科的理解中,课堂已经成为物理世界和数字世界组成的融合体。从简单的桌椅、多媒体、智能化教室到智慧学习空间的进阶,信息技术_慧科教育用什么软件教学

JFinal 部署在 Tomcat 下推荐方法_weixin_33950035的博客-程序员宅基地

为什么80%的码农都做不了架构师?>>> ..._jfinal tomcat 7

解决JDBC连接MYSQL发出的警告:Sun May 03 16:39:29 CST 2020 WARN: Establishing SSL connection without server‘s i_sun mar 12 23:29:54 cst 2023 warn:_baymaxht的博客-程序员宅基地

在用JDBC链接MYSQL时出现的:Sun May 03 16:39:29 CST 2020 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements ..._sun mar 12 23:29:54 cst 2023 warn:

随便推点

Vue 使用this.$router.push实现页面跳转_vue this.$router.push(参数)实现页面跳转操作_ppandpp的博客-程序员宅基地

想实现点击提交按钮后,跳回列表页面,展示数据。一开始点击提交,数据提交成功,但不跳转,使用router.push报错了以下是解决办法,一定要加return!!所以vue中页面的跳转办法就是 return this.$router.push({name: 'XXXX'})这里的name是router/index.js定义好的名称会根据配置好的路径跳转。{..._vue this.$router.push(参数)实现页面跳转操作

使用指针实现冒泡排序的数组元素升序排列_ERoslon青年的博客-程序员宅基地

使用指针实现冒泡排序的数组元素升序排列。#include<stdio.h>void bubarray(int a[], int n);int main(void){ int a[] = { 0,-1,-2,4,3,1,20,15 }; int n = (int)sizeof(a) / sizeof(a[0]); printf("Initial results:\n"); for (int i = 0; i < n; i++) printf("%d ", a[i]);

jboss seam_JBoss Seam简介-程序员宅基地

jboss seam本文是Michael Yuan和Thomas Heute即将出版的《 JBoss Seam:超越Java EE 5.0的强大功能和灵活性》一书的第一章和第二章的摘录。 什么是缝? JBoss Seam是“用于Java EE 5.0的轻量级框架”。 那是什么意思? Java EE(企业版)5.0本身不是“框架”的集合吗? 为什么您需要另一个超出官方规格的产品? 好吧,我们将..._seam.jboss.org:loader

视觉三维重建的关键技术及实现_3D视觉工坊的博客-程序员宅基地

视觉三维重建 = 定位定姿+ 稠密重建+ surface reconstruction +纹理贴图。三维重建技术是计算机视觉的重要技术之一,基于视觉的三维重建技术通过深度数据获取、预处..._openmvg opensfm

POJ - 3982 - 高精度~滚动数组.._kk303的博客-程序员宅基地

第一眼看~~矩阵乘法~~再看范围~~根本不需要~~~直接高精度做到99就ok了...当然可以开99个数组来存99个高精度数...但每个数只与其前面的三个数有关..所以我是用的滚动数组...如A3就覆盖了A0..A4覆盖了A1..A5覆盖了A2..A6覆盖了A0........#include#include#include#include#define oo 2000000

Android自定义日期区间选择日期范围选则的日历,实现类似美团携程选择酒店入住日期和离店日期的日历效果_安卓 仿携程日历下面价格_qifengdeqingchen的博客-程序员宅基地

前言有时候我们会有需要在日历上选择一个日期范围的这种需求,先选一个开始日期,然后再选结束日期,如酒店入住日期和离店日期选择,美团携程这种预定酒店的app都有这种操作。那么这种需求该如何实现呢?先看一下要实现的效果。实现思路如上图所见,首先是展示出了一个月份列表,然后进行选择入住日期和离店日期。这种日历效果该如何实现呢, 用系统的组件是实现不了的需要自定义日历组件,写一个自定义view来展示..._安卓 仿携程日历下面价格

推荐文章

热门文章

相关标签