一键SSH免密脚本
大型项目一键SSH免密脚本
#!/usr/bin/env bash
root=$(
cd $(dirname $0)/..
pwd
)
source ${root}/dragonrc
read -p "请您输入主机用户:" user
if [ -z $user ];then
echo
echo -e "\033[1;32;31m警告:您输入的用户名为空!\033[0m"
echo
exit 0
fi
read -p "请您输入主机密码:" mima
if [ -z $mima ];then
echo
echo -e "\033[1;32;31m警告:您第一次输入的密码为空!\033[0m"
echo
exit 0
fi
read -p "请您再次输入密码:" queren
if [ -z $queren ];then
echo
echo -e "\033[1;32;31m警告:您第二次输入的密码为空!\033[0m"
echo
exit 0
fi
if [ $mima == $queren ];then
echo "您输入的密码为:$queren" && sleep 1
echo "正在为您创建密钥对儿,请您注意" && sleep 1
else
echo
echo -e "\033[1;32;31m不好意思~您两次输入的密码不匹配,请您重新输入!\033[0m"
echo
read -p "请您输入主机用户:" user
if [ -z $user ];then
echo
echo -e "\033[1;32;31m警告:您输入的用户名为空!\033[0m"
echo
exit 0
fi
read -p "请您输入主机密码:" mima
if [ -z $mima ];then
echo
echo -e "\033[1;32;31m警告:您第一次输入的密码为空!\033[0m"
echo
exit 0
fi
read -p "请您再次输入密码:" queren
if [ -z $queren ];then
echo
echo -e "\033[1;32;31m警告:您第二次输入的密码为空!\033[0m"
echo
exit 0
fi
if [ $mima == $queren ];then
echo "您输入的密码为:$queren"
echo "正在为您创建密钥对儿,请您注意" && sleep 1
else
echo
echo -e "\033[1;32;31m抱歉~您两次输入的密码不匹配,请您重新执行脚本!\033[0m"
echo
exit 1
fi
fi
> /root/.ssh/authorized_keys
if [ -f /root/.ssh/id_rsa.pub ];then
echo "您的主机已经有密钥对儿了,不需要再次创建"
else
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
fi
rpm -q sshpass &> /dev/null
if [ $? -ne 0 ];then
rpm -ivh ${root}/rpm/other/sshpass-1.06-2.el7.x86_64.rpm &> /dev/null
echo "StrictHostKeyChecking no" > /root/.ssh/config
echo "UserKnownHostsFile=/dev/null" >> /root/.ssh/config
else
echo "StrictHostKeyChecking no" > /root/.ssh/config
echo "UserKnownHostsFile=/dev/null" >> /root/.ssh/config
fi
IFS=',' read -r -a all_nodes <<<"${ALL_NODES}"
for ip in "${all_nodes[@]}"; do
sshpass -p $queren ssh-copy-id $user@$ip &> /dev/null
ssh $user@$ip "pwd" &> /dev/null
if [ $? -eq 0 ];then
echo "$ip is add successful"
else
echo "$ip is failure"
fi
done
ansible ${OTHER_NODES} -m shell -a "rm -rf /root/.ssh/id_rsa*"
ansible ${OTHER_NODES} -m shell -a "ssh-keygen -t rsa -P \"\" -f ~/.ssh/id_rsa"
echo -e "\033[5;32;31m温馨提示:主机双向互信ing...\033[0m"
IFS=',' read -r -a nodes <<<"${OTHER_NODES}"
for oip in "${nodes[@]}"; do
ssh -T $user@$oip cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
done
ansible dragon -m copy -a "src=/root/.ssh/authorized_keys dest=/root/.ssh/authorized_keys"
echo -e "\033[1;32;31m双向互信已完成!\033[0m"
一键SSH免密脚本的更多相关文章
- ssh免密脚本
#!/bin/sh if [ "$1"x = ""x ]; then echo "usage:/opt/bin/auto-ssh.sh user se ...
- Shell脚本实现SSH免密登录及批量配置管理
本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...
- [提供可行性脚本] RHEL/CentOS 7 多节点SSH免密登陆
实验说明: 在自动化部署时,会经常SSH别的机器去操作,然而每次的密码认证却很令人烦躁,尤其是很长的密码,因此SSH免密登陆就显得必不可少: 在机器数目很多的时候,使用更过的往往是Ansible分发并 ...
- Linux入门——SSH免密登录
SSH免密登录 1.简介 SSH是一种网络协议,用于计算机之间的加密登录. 本文针对的实现是OpenSSH,它是自由软件,应用非常广泛. 2.初始化公钥私钥 有rsa,dsa两种加密方式,生成的公钥私 ...
- linux下expect命令实现批量ssh免密
有时候我们需要批量发送ssh命令给服务器,但是有可能有些服务器是新加入的,还没有配置ssh免密,这个时候就会提示我们输入yes/no 或者password等,expect脚本命令就是用于在提示这些的时 ...
- Shell 编程中,在循环里使用ssh免密远程执行命令的注意事项
前提:给自己机器配置ssh免密登录#!/bin/bashcat << 'EOD' > list1234EOD while read linedo if ssh myname@127. ...
- SSH免密登录配置
SSH免密登录配置 本地生成密钥文件: $ ssh-keygen 输出: Generating public/private rsa key pair. Enter file in which to ...
- Centos7配置ssh免密登录群发
ssh免密登录是客户端发送自己的公钥到服务器.用公钥进行解密,自己生成的私钥进行加密. 首先在客户端查看sshd服务是否启动 [zhiwei@zhiwei1 ~]$ ps -Af|grep sshd; ...
- 批量实现ssh免密登录
本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...
- hadoop(八)集群namenode启动ssh免密登录(完全分布式五)|10
前置章节:hadoop集群配置同步(hadoop完全分布式四)|10 启动namenode之前: 1. 先查看有无节点启动,执行jps查看,有的话停掉 [shaozhiqi@hadoop102 ~]$ ...
随机推荐
- mysql8.0 主从架构模式【0到1架构系列】
前提条件 准备3,4,5台虚拟机 祼装mysql8.0 主从架构 常见两种模式"一主多从"和"级联复制"两种,基本都很简单,都是依赖binlog日志文件进行同步 ...
- 仅花一天时间,开发者重制 32 年前经典 Mac 应用!
导读:在这个快节奏的技术世界里,重温过去并从中汲取灵感总是一件有趣的事情.今天要介绍的是一款仅用一天时间重制的经典 Macintosh 应用--Stapler.这款应用最初发布于1992年,现在由一位 ...
- Typora中的markdown语法的学习
markdown语法学习 二级标题 三级标题 四级标题 字体 hello world hello world hello world hello world 引用 我是最nb的 分割线 图片 ctrl ...
- Android 国际化:新增越南语语系(Java)
前提: 1. 在res文件夹中,新增values-vi文件夹(越南语文件夹) 2. 在步骤1的文件夹中,新增strings.xml 背景: 1. targetSdkVersion 29 2. Jdk ...
- MyBatis 从入门到放弃 ( MyBatis基础总结 )
目录 MyBatis历史 Mybatis特性 MyBatis下载 和其它持久化层技术对比 开发环境 创建maven工程 创建MyBatis的核心配置文件 创建mapper接口 创建MyBatis的映射 ...
- 【YashanDB数据库】PHP无法通过ODBC连接到数据库
[问题分类]驱动使用 [关键字]ODBC.驱动使用.PHP [问题描述]应用使用php-fpm+nginx架构,通过php的ODBC拓展连接YashanDB时出现报错: [unixODBC][Driv ...
- 【YashanDB知识库】swap空间使用超大报错
问题描述 问题单 使用GROUP_CONCAT函数时,数据库swap表空间上涨厉害 测试用例 drop table tmp1; create table tmp1(c1 int,c2 double,c ...
- ST-SSL: 用于交通流量预测的时空自监督学习《Spatio-Temporal Self-Supervised Learning for Traffic Flow Prediction》(交通流量预测、时空异质性、自监督、数据增强)
2023年10月23日,继续论文,好困,想发疯. 论文:Spatio-Temporal Self-Supervised Learning for Traffic Flow Prediction Git ...
- DOM & BOM – Input File, Drag & Drop File, File Reader, Blob, ArrayBuffer, File, UTF-8 Encode/Decode, Download File
前言 之前写过 2 篇关于读写文件和二进制相关的文章 Bit, Byte, ASCII, Unicode, UTF, Base64 和 ASP.NET Core – Byte, Stream, Dir ...
- SQL Server – Soft Delete
前言 Soft Delete 中文叫 "逻辑删", "软删除". 对比的自然就是 Hard Delete. 这篇想聊一聊它的好与坏, 什么时候可以考虑用它. H ...