shell脚本ssh登录并执行命令_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 root@192.168.0.202
这里需要输入一次密码(屏幕不显示),以后就可以免密登录了,因为第一次通过ssh传递key文件,是需要输入密码的。
步骤三:进行免密登录测试
[root@server01 ~]# ssh root@192.168.0.202
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,用户名,密码,当然也可以自动生成。
[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;doip=`echo $host | cut -d " " -f1`username=`echo $host | cut -d " " -f2`password=`echo $host | cut -d " " -f3`
expect <<EOFspawn ssh-copy-id -i $username@$ipexpect {"yes/no" {send "yesn";exp_continue}"password" {send "$passwordn"}}expect eof
EOF
done < /root/host.txt
步骤四:赋权并执行脚本
[root@server01 ~]# chmod +x test.sh
[root@server01 ~]# . test.sh
步骤五:测试,成功,均不需要输入密码
[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 ~]#
欢迎关注百哥IT技术专栏,联系QQ:1931424597
shell脚本ssh登录并执行命令_Linux批量免密码SSH登录案例相关推荐
- python ssh 远程登录路由器执行命令_ssh批量登录并执行命令(python实现)
局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...
- ubuntu croncab定时任务 shell脚本单独可行 定时任务执行命令不可行
shell脚本功能: 获取使用gpu的进程,通过长度判断有几个进程使用gpu,当有1个进程时,执行命令启动另一个进程 创建定时任务步骤: 编写定时任务: crontab -e 编写内容(两个小时执行一 ...
- linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项
原标题:Linux shell脚本使用while循环执行ssh的注意事项 如果要使用ssh批量登录到其它系统上操作时,我们会采用循环的方式去处理,那么这里存在一个巨大坑,你必须要小心了. 一.场景还原 ...
- python实现ssh登录send_Python实现ssh批量登录并执行命令
局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务 是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软 ...
- Linux执行命令提示Password,linux expect远程自动登录以及执行命令
linux远程自动登录以及执行命令 远程登录 该自动登录的过程是通过shell里面expect实现的,类似相当于开了一个类似于cmd的命令段输出IP和密码. 注意该脚本能够执行的前提是安装了expec ...
- Shell脚本学习-阶段二十七-命令解释三
文章目录 前言 quyotastats repquota convertquota swapoff swapon sync chroot getent last lastb lastlog logro ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
- unity连接linux服务器,C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令...
本文主要向大家介绍了C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. 在Unity3D项目开发工具时需要用到S ...
- Shell 脚本中如何使用make命令
最近开发的项目中需要编写Shell脚本对整个工程进行自动化编译,即在Shell脚本中使用make命令来进行编译,下面回顾一下Shell脚本中如何使用make命令) 在开发一个系统时,一般是将一个系统分 ...
最新文章
- GridFS删除文件代码示例
- MFC中滑动条的使用
- 【CodeVS】1083 Cantor表
- oracle什么时候用in,Oracle Study之---Oracle IN和NOT IN的使用
- 插入网站连接_网站开发与网页制作
- 稳压电源的设计与制作_直流稳压电源设计
- 【html和css入门】实现简单的页首导航
- Linux如何实现自动文件同步?
- Windows下把EXE 程序变成服务运行
- java gbk编码_java中如何得到输入的汉字的GBK编码
- 方方格子access_有哪些好用能提高工作效率的 Excel 插件(或 Office 办公插件)值得推荐?...
- 互联网寒冬下,为什么就你被裁了?
- 支持小游戏开发的“引擎四剑客”
- 1991【19CSPS提高组】树的重心 信奥赛Kirito(本人)
- 【重磅】云栖社区2017年度内容特辑
- Java面向对象day03
- Python(函数与面向对象)
- 复选框至少选择一项_如果没有设计师,您至少要选98种材料,学会35项工艺!...
- 工程热力学学习笔记DE-2. Erster Hauptsatz der Thermodynamik
- RoNIN: Robust Neural Inertial Navigation预训练模型测试