首页
关于
推荐
CSDN
Search
1
文件上传下载-io-流的理解-笔记
128 阅读
2
vue循环指令el-table-column展示图片src路径拼接
122 阅读
3
正则表达式,将字符串分割两部分
113 阅读
4
MySQL数据库练习【一】
109 阅读
5
MySQL数据库练习【三】
93 阅读
默认分类
Mysql
Java基础
一天一练
Mongodb
Nginx
Docker
FastDFS
面试题
云计算基础
linux基础
shell脚本
实验
工具
基础命令
redis
zookeeper
部署
案例
登录
Search
标签搜索
vue
Mysql
IO
面试题
良辰美景好时光
累计撰写
68
篇文章
累计收到
0
条评论
首页
栏目
默认分类
Mysql
Java基础
一天一练
Mongodb
Nginx
Docker
FastDFS
面试题
云计算基础
linux基础
shell脚本
实验
工具
基础命令
redis
zookeeper
部署
案例
页面
关于
推荐
CSDN
搜索到
6
篇与
的结果
2024-02-23
秘钥认证与分发脚本(免密码登录)
@TOC1.集群批量管理--秘钥认证1.1.概述管理更加轻松:两个节点,通过密钥形式进行访问,不需要输入密码,单向服务要求(应用场景)::star::star::star::star::star:==一些服务在使用前要求我们做秘钥认证==手动写批量管理脚本名字:密钥认证,免密码登录,双机互信1.2.原理1.3.极速上手指南角色主机名ip管理机m0110.0.0.0.7被管理节点nfs0110.0.0.0.17被管理节点web0110.0.0.0.27被管理节点backup10.0.0.0.37hostnamectl set-hostname backup1.3.0.基本检查#ping ping 172.16.1.xxx #22端口 sshd服务开启或可以访问 nmap -p22 172.16.1.31 172.16.1.71.3.1.创建密钥对ssh-keygen -t rsa #注意创建的啥时候也可以不加-t 通过rsa方法对数据进行加密.1.3.2.分发公钥ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.0.171.3.3.连接测试ssh 10.0.0.17 w ssh 10.0.0.17 hostname -I温馨提示: ssh-copy-id后公钥被存放在对方服务器的用户家目录下面的.ssh下面. 名字叫:authorized_keys1.4.自动化创建与分发秘钥阻碍::one:创建秘钥对:two:分发公钥的时候:yes/no (yes后会把信息保存到.ssh/known_hosts):three:分发公钥的时候:输入密码1.4.1.自动化创建秘钥ssh-keygen -f ~/.ssh/id_rsa -P '' ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''-f用于指定私钥的位置 -P 密码短语 设置为空1.4.2.自动化分发公钥阻碍 : 密码#安装密码提供密码 yum install -y sshpass #sshpass命令基本使用 # -p指定密码 # 先: ssh 10.0.0.7 hostname -I # 检查是否需要输入yes/no # 然后使用: sshpass -p123456 ssh 10.0.0.17 hostname -I 10.0.0.7 172.16.1.7 #使用sshpass 与ssh-copy-id分发公钥 # 先: ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.17 # 检查是否需要输入yes/no # 然后使用: sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.17温馨提示: sshpass与ssh-copy-id的时候如果第1次连接,提示yes/no,sshpass失效了.补充说明: sshpass适用于给ssh相关的命令提供密码:ssh,scp,ssh-copy-id.阻碍: 第1次连接的时候提示yes/no温馨提示: 第1次远程的提示 yes/no,主机密钥信息检查,输入yes后存放到~/.ssh/known_hosts 解决思路: 临时取消即可,连接的时候不检查主机信息. -o StrictHostKeyChecking=no 临时不检查主机信息.sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no 10.0.0.171.4.3.自动化创建与分发脚本ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no 10.0.0.17vim fenfamiyao.sh #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin color_function(){ color () { RES_COL=60 MOVE_TO_COLOR="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m" SETCOLOR_WARNING="echo -en \\033[1;33m" SETCOLOR_NORMAL="echo -en \E[0m" echo -en "\E[1;35m$1\E[0m" && $MOVE_TO_COLOR echo -n "[" if [ $2 = "success" -o $2 = "0" ] ;then ${SETCOLOR_SUCCESS} echo -n $" OK " elif [ $2 = "failure" -o $2 = "1" ] ;then ${SETCOLOR_FAILURE} echo -n $"FAILED" else ${SETCOLOR_WARNING} echo -n $"WARNING" fi ${SETCOLOR_NORMAL} echo -n "]" echo } [ $# -eq 0 ] && echo "Usage: `basename $0` {success|failure|warning}" color $1 $2 } . /etc/os-release # 一键创建秘钥对 分发秘钥对 #1.vars pass=123456 ips="10.0.0.17 10.0.0.27 10.0.0.37" # 加入判断sshpass命令是否存在,如果不存在则安装 if [[ ${ID} =~ ^(rocky|rhel|centos) ]];then rpm -q sshpass &>/dev/null || yum -y install sshpass &>/dev/null elif [[ ${ID} =~ ^(ubuntu) ]];then dpkg -V sshpass &>/dev/null || apt -y install sshpass &>/dev/null else color_function "比支持此系统:${ID}" 2 exit fi #2.创建密钥对 if [ -f ~/.ssh/id_rsa ];then echo "已经创建过密钥对" else echo "正在创建密钥对" ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' &>/dev/null if [ $? -eq 0 ];then color_function "创建密钥对成功" 0 else color_function "创建密钥对失败" 1 exit fi fi #3.通过循环发送公钥 for ip in $ips do sshpass -p${pass} ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no ${ip} &>/dev/null if [ $? -eq 0 ];then color_function "${ip}:秘钥已发送..." 0 else color_function "${ip}:秘钥发送失败..." 1 fi done #4.批量在所有机器上执行命令 检查 for ip in $ips do hostname=`ssh ${ip} hostname` if [ $? -eq 0 ];then color_function "${ip}:${hostname}检测成功..." 0 else color_function "${ip}:${hostname}检测失败..." 1 fi doneendl
2024年02月23日
4 阅读
0 评论
0 点赞
1
2