/ 前言 /

通过密钥的方式来使服务器之间免密登录无疑是很重要的, 设想一下你要在N台服务器上面搭建MySQL主从又或者是ES集群, 此时你需要先在其中一台机器上面搭建之后将文件拷贝打其它服务器上面, 而最简单的方式就是直接通过脚本来一次性拷贝完成, 如果每拷贝一台机器你都需要输入一次服务器密码那绝对不叫自动化, 最多就是帮你省去了curl + ccurl + v罢了

/ 1 / SSH

1 . 1 生成密钥

想要实现免密登录我们就需要通道SSH中的一个命令来生成密钥

ssh-keygen -t rsa -P '' -f /home/es/.ssh/id_rsa
  • -t : 指定要生成的密钥类型,有rsa1(SSH1),dsa(SSH2),ecdsa(SSH2),rsa(SSH2)等类型,较为常用的是rsa类型
  • -P : 指定私钥, 可以选择空, 如果不带-P指令的话系统会要求你确认私钥
    ssh-keygen -t rsa -f /home/es/.ssh/id_rsa
    # 这里可以输入emtpy
    Enter passphrase (empty for no passphrase):
    
  • -f : 指定生成密钥的文件名称, 如果不带-f指令的话系统会要求你输入文件名称
    ssh-keygen -t rsa
    Enter file in which to save the key (/home/es/.ssh/id_rsa):
    
  • -b : 指定密钥长度 ,单位是bit
  • -q :静默模式
  • -i :读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥

密钥生成展示

[es@node-1 root]$ ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa.pub
Generating public/private rsa key pair.
/home/es/.ssh/id_rsa.pub already exists.
Overwrite (y/n)? y
Your identification has been saved in /home/es/.ssh/id_rsa.pub.
Your public key has been saved in /home/es/.ssh/id_rsa.pub.pub.
The key fingerprint is:
SHA256:tE9hU+EAFptvllQDwyIzurD2yZIKQnrunfWk4Ci1KPw es@node-1
The key's randomart image is:
+---[RSA 2048]----+
|        +++.=.   |
|      +..o.* .   |
|     . ++.= .    |
|  . .  . = +     |
| . o .  S *      |
|o + .    =       |
|=+.=... . .      |
|*+++++ +         |
|o+=E+ . .        |
+----[SHA256]-----+
[es@node-1 root]$

1 . 2 同步密钥

密钥生成之后我们需要将密钥同步到其它服务器中,

ssh-copy-id -i /root/.ssh/id_rsa.pub root@${IP_LIST[i]}
ssh-copy-id -i /home/es/.ssh/id_rsa.pub root@192.168.232.137
  • -i : 指定公钥文件

同步密钥展示

[root@node-1 .ssh]# ssh-copy-id -i /home/es/.ssh/id_rsa.pub root@192.168.0.100
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/es/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysNumber of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@192.168.0.100'"
and check to make sure that only the key(s) you wanted were added.
1 . 3 免密登录
[root@node-1 .ssh]# ssh root@192.168.232.137
Last login: Mon May 18 02:38:49 2020 from 192.168.232.136
[root@node-2 ~]#

/ 2 / 脚本

注意 :
  1. 修改IP_LIST, 值为其余服务器的IP地址
  2. 当前脚本处理的是root账户的免密, 如需改为其它账户只需要如下操作
# 修改创建密钥的账户
spawn ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
spawn ssh-keygen -t rsa -P '' -f /home/账户名/.ssh/id_rsa# 修改同步密钥的账户
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@${IP_LIST[i]}
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub 账户名@${IP_LIST[i]}
#
免密配置Shell脚本
# !/bin/bash# es集群IP地址
IP_LIST=(
192.168.0.100
192.168.0.101
192.168.0.102
)# 创建秘钥
function create_keygen(){echo "开始创建密钥"
su - root <<EOFexpect -c"spawn ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsaset timeout 30expect {\"*Overwrite*\" {send \"y\r\";exp_continue}}"
EOF
if [ $? -eq 0 ];thenecho "创建秘钥成功"
elseecho "创建秘钥失败"
fi
}# 同步密钥
function sycn_keygen(){echo "开始同步密钥到其他服务器"
for ((i=0;i<${#HOST_IP[*]};i++))
do
su root<<EOF
expect -c"spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@${IP_LIST[i]}expect {\"*yes/no*\" {send \"yes\r\";exp_continue}\"*password:*\" {send \"$password\r\";exp_continue}}"
EOF
done
if [ $? -eq 0 ];thenecho "设置免秘钥成功"
elseecho "设置免秘钥失败"
fi
}ssh_keygen_fun
copy_ssh_keygen

Shell脚本配置账户免密登录相关推荐

  1. Shell脚本实现SSH免密登录及批量配置管理

    1.SSH免密登录及批量配置管理 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的P ...

  2. Linux运维:Shell脚本实现ssh免密登录远程服务器

    LInux系统日常运维过程中,经常需要在本地运行脚本执行对远程主机的命令,正常情况下,ssh登录远程服务器时会提示输入密码,这会影响到脚本的自动执行(因为shell脚本中没有自动填充密码的命令).有三 ...

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

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

  4. Linux环境非root用户配置SSH免密登录(配置原理)

    问题产生背景: 有三台CentOS 7.5机器要部署hadoop分布式环境,机器信息如下 IP 地址 主机名 192.168.119.100 node01 192.168.119.110 node02 ...

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

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

  6. 如何配置ssh免密登录

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

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

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

  8. Git配置SSH 免密登录

    前言:相信大家现在在工作中,都在使用Git吧.众所周知,Git有两种克隆代码的方式: 一种是http,另外一种就是SSH. SSH免密登录,免去了每次登录都输入账号密码的繁琐,但是却需要配置在电脑上. ...

  9. 20210829-基于CentOS7/Linux配置ssh免密登录

    #关键字:Linux,CentOS7,ssh 登录,免密登录 目录 一.目标: 二.环境说明: 三.配置步骤: 一.目标: 1. 从一台机器使用 'shh 主机名'命令登录另一台机器时不用输入密码. ...

最新文章

  1. MIT新研究给量子计算机「泼冷水」:自然界辐射会干扰它,需要研究新对策 | Nature...
  2. Android中通过数组资源文件xml与适配器两种方式给ListView列表视图设置数据源
  3. 8086中断系统——《x86汇编语言:从实模式到保护模式》读书笔记04
  4. Markdown中如何输入上标、下标?
  5. [JavaScript][转]offsetParent和parentElement的区别
  6. 大变革!苹果设计团队三名核心元老离职
  7. matlab视频帧间差分,matlab中视频帧间差分
  8. Maven项目添加ojdbc8
  9. 博文视点大讲堂第45期——我们应该向魔兽世界学习什么 圆满结束
  10. 谈谈阿里log4j2事件:严重性是个主观判断
  11. Ubuntu与stm32串口通信及Windows与stm32串口通信
  12. Excel单元格内换行(包括空行)for Mac
  13. win10系统关机被阻止解决方法
  14. mysql中where in用法
  15. mysql8.017安装教程_mysql 8.0.17 安装图文教程
  16. 无线蓝牙耳机什么牌子好?适合学生党的蓝牙耳机性价比排行榜
  17. Verilog 序列信号发生器的三种设计思路
  18. adb: failed to install app-debug.apk: Failure [INSTALL_FAILED_ABORTED: User rejected permissions]
  19. 英语或者计算机考级的计划,英语b级考试时间
  20. Bokeh可视化图表使用教程

热门文章

  1. 安卓手机录屏高科技,为什么还有手机无法录屏,必须要知道!
  2. 可以跟踪军事和情报人员的啤酒点评应用程序
  3. my cloud test bed (by quqi99)
  4. HIGG认证咨询 评估的服装和鞋类产品对环境和社会的影响,可持续服装联盟的目标是什么
  5. String、StringBuffer 、StringBuilder
  6. 【并发基础】线程的通知与等待:obj.wait()、obj.notify()、obj.notifyAll()详解
  7. 老人家里没网络怎么安装监控,没有wifi怎么安装监控摄像头
  8. 【python】import的用法总结
  9. 一个特别适合新手练习的Android小项目——每日一妹纸
  10. 笔记本电脑升级后无法外接显示器,提示usb typec功能可能受限