一、为什么要免密码登录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 

可看到提示,成功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 ~]# 

欢迎关注百哥IT技术专栏,联系QQ:1931424597

shell脚本ssh登录并执行命令_Linux批量免密码SSH登录案例相关推荐

  1. python ssh 远程登录路由器执行命令_ssh批量登录并执行命令(python实现)

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...

  2. ubuntu croncab定时任务 shell脚本单独可行 定时任务执行命令不可行

    shell脚本功能: 获取使用gpu的进程,通过长度判断有几个进程使用gpu,当有1个进程时,执行命令启动另一个进程 创建定时任务步骤: 编写定时任务: crontab -e 编写内容(两个小时执行一 ...

  3. linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项

    原标题:Linux shell脚本使用while循环执行ssh的注意事项 如果要使用ssh批量登录到其它系统上操作时,我们会采用循环的方式去处理,那么这里存在一个巨大坑,你必须要小心了. 一.场景还原 ...

  4. python实现ssh登录send_Python实现ssh批量登录并执行命令

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务 是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软 ...

  5. Linux执行命令提示Password,linux expect远程自动登录以及执行命令

    linux远程自动登录以及执行命令 远程登录 该自动登录的过程是通过shell里面expect实现的,类似相当于开了一个类似于cmd的命令段输出IP和密码. 注意该脚本能够执行的前提是安装了expec ...

  6. Shell脚本学习-阶段二十七-命令解释三

    文章目录 前言 quyotastats repquota convertquota swapoff swapon sync chroot getent last lastb lastlog logro ...

  7. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  8. unity连接linux服务器,C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令...

    本文主要向大家介绍了C#编程之C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助. 在Unity3D项目开发工具时需要用到S ...

  9. Shell 脚本中如何使用make命令

    最近开发的项目中需要编写Shell脚本对整个工程进行自动化编译,即在Shell脚本中使用make命令来进行编译,下面回顾一下Shell脚本中如何使用make命令) 在开发一个系统时,一般是将一个系统分 ...

最新文章

  1. GridFS删除文件代码示例
  2. MFC中滑动条的使用
  3. 【CodeVS】1083 Cantor表
  4. oracle什么时候用in,Oracle Study之---Oracle IN和NOT IN的使用
  5. 插入网站连接_网站开发与网页制作
  6. 稳压电源的设计与制作_直流稳压电源设计
  7. 【html和css入门】实现简单的页首导航
  8. Linux如何实现自动文件同步?
  9. Windows下把EXE 程序变成服务运行
  10. java gbk编码_java中如何得到输入的汉字的GBK编码
  11. 方方格子access_有哪些好用能提高工作效率的 Excel 插件(或 Office 办公插件)值得推荐?...
  12. 互联网寒冬下,为什么就你被裁了?
  13. 支持小游戏开发的“引擎四剑客”
  14. 1991【19CSPS提高组】树的重心 信奥赛Kirito(本人)
  15. 【重磅】云栖社区2017年度内容特辑
  16. Java面向对象day03
  17. Python(函数与面向对象)
  18. 复选框至少选择一项_如果没有设计师,您至少要选98种材料,学会35项工艺!...
  19. 工程热力学学习笔记DE-2. Erster Hauptsatz der Thermodynamik
  20. RoNIN: Robust Neural Inertial Navigation预训练模型测试

热门文章

  1. 仪表自定义刻度值_汇总丨工业仪表知识大全和选型参考
  2. Python: 除matplotlib外还有哪些数据可视化库?
  3. Ubuntu上安装GCC编译器
  4. java js base64_java与js转base64编码格式
  5. MyBatis3系列__03几个属性总结
  6. 专有网络VPC搭建FTP站点
  7. Latch free等待事件
  8. 关闭Visual Studio 实时调试器
  9. OpenCV-巴特沃斯低通高通滤波器(C++)
  10. python关于组合数据类型_python组合数据类型